Swift SpriteKit允许用户在玩家节点

时间:2017-04-03 19:51:31

标签: swift user-controls

在我的游戏中,用户控制他们四处移动的船只。

我应该如何允许用户从一系列节点中进行选择?

例如,提供红色/蓝色/绿色船只,当他们的分数= X时,他们可以选择甚至解锁。

这是我当前玩家节点的代码:

    let shipTexture = SKTexture(imageNamed: "ship1.png")

    ship = SKSpriteNode(texture: shipTexture)
    ship.position = CGPoint(x: self.frame.midX, y: -self.frame.height / 3)
    ship.zPosition = 3
    ship.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 30, height: 100))
    ship.physicsBody!.isDynamic = false
    ship.run(makeShipAnimate)
    ship.physicsBody!.contactTestBitMask = ColliderType.ship.rawValue
    ship.physicsBody!.categoryBitMask = ColliderType.ship.rawValue
    ship.physicsBody!.collisionBitMask = ColliderType.ship.rawValue
    ship.physicsBody?.affectedByGravity = false

    self.addChild(ship)

有没有办法允许用户在“ship1.png”或“ship2.png”之间进行选择?

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。这样的事情应该让你开始:

import SpriteKit

class GameScene: SKScene {

    var shipName = ""//create a var to hold the chosen ship

然后创建一些按钮或方式供用户选择哪艘船并创建一个函数来处理选择,方法是传入与特定颜色相对应的Int

func chooseShip(ship: Int) {
        switch ship {
        case 0:
            shipName = "blueShip.png"
            break
        case 1:
            shipName = "greenShip.png"
            break
        default:
            shipName = "greenShip.png"
        }
    }

因此,如果选择蓝色船只,该按钮将调用上述功能并传入选择:

chooseShip(ship: 0)

用户选择后,您可以加载所需的图像:

let shipTexture = SKTexture(imageNamed: shipName)
etc...