【问题标题】:Sprite-kit Main Character PickerSprite-kit 主要角色选择器
【发布时间】:2016-08-30 15:47:11
【问题描述】:

我正在使用 swift 2 和 sprite-kit。我想知道如何制作一个选择角色场景让我的玩家选择一个角色在游戏中玩,我已经设置了场景,但我不知道如何整合多个角色,可以选择一个玩?任何参考或示例代码将不胜感激。

在 GameScene() 中我有

    //plane = SKSpriteNode(imageNamed: "plane")
    plane.size = CGSize(width: 80, height: 80)
    plane.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 4)
    plane.physicsBody = SKPhysicsBody(circleOfRadius: plane.frame.height / 2)
    //plane.physicsBody = SKPhysicsBody(texture: plane.texture!, size: plane.size)
    plane.physicsBody?.affectedByGravity = true
    plane.physicsBody?.dynamic = true
    plane.zPosition = 2
    self.addChild(plane)'

在 settings() 我有

    func mainScene(){

    mainSceenButton = SKSpriteNode(imageNamed: "mainMenu")
    mainSceenButton.size = CGSizeMake(200, 100)
    mainSceenButton.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + self.frame.height / 3)
    self.addChild(mainSceenButton)

    plane = SKSpriteNode(imageNamed: "plane")
    plane.size = CGSizeMake(50, 50)
    plane.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 + 100 )
    self.addChild(plane)

    plane1 = SKSpriteNode(imageNamed: "plane1")
    plane1.size = CGSizeMake(50, 50)
    plane1.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 )
    self.addChild(plane1)

    plane2 = SKSpriteNode(imageNamed: "plane2")
    plane2.size = CGSizeMake(50, 50)
    plane2.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2 - 100 )
    self.addChild(plane2)

}



override func didMoveToView(view: SKView) {
    mainScene()
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    let mainMenuScene = StartScene(fileNamed: "StartScene")

    for touch in touches{
        let location = touch.locationInNode(self)
        if mainSceenButton.containsPoint(location){
            self.scene?.view?.presentScene(mainMenuScene!, transition: SKTransition.fadeWithDuration(1.0))
        }
        if plane1.containsPoint(location){
            GameScene().plane = SKSpriteNode(imageNamed: "plane1")
        } else {
            GameScene().plane = SKSpriteNode(imageNamed: "plane")
        }
    }
}'

【问题讨论】:

  • 您自己尝试过什么吗?这个网站并不是为了让我们仅仅为您编写示例代码或提出意见建议。
  • 我更新了我的问题@ZGski

标签: swift sprite-kit swift2 skspritenode


【解决方案1】:

这个问题确实太宽泛了,但这是我过去看到的(和我自己做过的)的方式

  1. 创建一个 SKSpriteNode 的子类来制作您的自定义播放器类。
  2. 初始化时,根据节点选择的内容更改节点的纹理。

【讨论】:

  • 好的,所以我更新了我的帖子,我试图在一个视图中做的是点击一个平面,然后让该平面成为另一个视图中的图像,但它不起作用
  • @ShaneReichenfeld 看起来您可能需要更多地了解 OOP 和 Swift...您不应该通过执行 GameScene().plane 来初始化新场景...我实际上非常对你在做什么感到困惑。您应该发布整个班级。我看不出你在哪里展示场景或任何东西。
  • @Kendel OP 需要知道,当创建新的 GameScene 时,所有字段都将初始化为空/默认值。 OP 似乎认为GameScene().plane = SKSpriteNode(imageNamed: "plane1") 将飞机永久设置在 GameScene 上。
【解决方案2】:

您可以尝试使用 NSUserDefaults 在 Settings touchesBegan 中保存用户选择。

let defaults = NSUserDefaults.standardUserDefaults()

if plane.containsPoint(location) {
    defaults.setObject("plane", forKey: "userPlane")
} else if plane1.containsPoint(location) {
    defaults.setObject("plane1", forKey: "userPlane")
} else if plane2.containsPoint(location) {
    defaults.setObject("plane2", forKey: "userPlane")
}

然后在 GameScene 中,在创建平面时检索选择。

let defaults = NSUserDefaults.standardUserDefaults()
if let userPlane = defaults.stringForKey("userPlane") {
    plane = SKSpriteNode(imageNamed: userPlane)
}

在您的代码中,您尝试在 GameScene 的新实例上设置飞机,但是一旦您退出设置场景,该选择就会丢失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多