Sprite-kit主角色选择器 [英] Sprite-kit Main Character Picker

查看:122
本文介绍了Sprite-kit主角色选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using swift 2 and sprite-kit. I was wondering how I would make a choose character scene for my player to choose a character to play in the game, I have the scene set up, but I don't know how to integrate multiple characters, that can be chosen as the one to play? Any references or sample code would be appreciated.

在我拥有的GameScene()中

in GameScene() i have

    //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()中

in settings() i have

    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")
        }
    }
}'

推荐答案

您可以尝试使用NSUserDefaults在设置touchesBegan"中保存用户选择.

You could try using NSUserDefaults to save the users selection in 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中,在创建平面时检索选择.

Then in GameScene, retrieve the selection when creating the plane.

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

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

In your code you are trying to set the plane on a new instance of GameScene, but that selection will be lost as soon as you exit the settings scene.

这篇关于Sprite-kit主角色选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆