Sprite-kit Главный Персонаж Выбор

Я использую Swift 2 и спрайт-кит. Мне было интересно, как сделать сцену выбора персонажа для моего игрока, чтобы выбрать персонажа для игры в игре, у меня настроена сцена, но я не знаю, как объединить несколько персонажей, которые можно выбрать в качестве одного играть? Любые ссылки или примеры кода будут оценены.

в 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)'

в настройках () у меня есть

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

2 ответа

Вы можете попробовать использовать NSUserDefaults, чтобы сохранить выбор пользователей в настройках 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, но этот выбор будет потерян, как только вы выйдете из сцены настроек.

На самом деле слишком широкий вопрос, но вот как я это видел в прошлом (и сделал сам)

  1. Создайте подкласс SKSpriteNode, чтобы создать собственный класс игрока.
  2. При инициализации меняйте текстуру узла в зависимости от того, что они выбирают.
Другие вопросы по тегам