Swift允许用户选择播放器精灵节点



我正在尝试允许用户选择他们的首选玩家类型/设计。

在我的GameScene中,我只有1个带有纹理的SKSpritenode,但是我希望用户可以选择在3个不同的玩家之间进行选择。

我能想到的唯一方法是让3个玩家选项全部链接到他们自己的GamesScene。

3个游戏感是相同的,只有玩家喷射的纹理会有所不同。

这似乎根本不是很有效。但是我是一个新手,只是想使用到目前为止收集到的知识。

是否有更有效的方法可以做到这一点?

,尽管我不确定如何解释您的问题,但是!

我建议您创建一些逻辑,以允许您在选择场景以及游戏场景中插入头像。

extension SKSpriteNode {
    enum AvatarType {
        case blueMan
        case purpleWizard
        case greyDinosaur
    }
    class func avatar(withType type: AvatarType) -> SKSpriteNode {
        let spriteName: String
        switch type {
        case .blueMan:
            spriteName = "blueManSprite"
        // case .purpleWizard
        //   ...
        default:
            spriteName = "someSprite"
        }
        return SKSpriteNode(imageNamed: spriteName)
    }
}

在您的SKScene子类(或任何地方;)中,您可以创建类似的头像:

class ChooseAvatarScene : SKScene {
    let avatarBlueMan = SKSpriteNode.avatar(withType: .blueMan)
    // let avatarWizard = ...
    // let avatarDinosaur = ...
    func setup() {
        avatarBlueMan.position = CGPoint(x: 50, y: 50)
        // avatarWizard.position = ...
        // avatarDinosaur.position = ...
        addChild(avatarBlueMan)
        addChild(avatarWizard)
        addChild(avatarDinosaur)
    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // check if any of the touches hit an avatar sprite
    }
}

当然,需要将精灵节点放在正确的位置。之后,您需要实现触摸处理,因此在用户触摸节点时注册。

这种方法的好处是,阿凡达节点可以在不同的场景中重复使用 - 因此,如果您想更改巫师的精灵,只有一个地方只需更改它即可。请注意,该示例中的SKSpriteNode扩展名非常简单 - 如果您想要的是单个精灵以外的任何东西,我建议您改用子类SKSpriteNode。

最新更新