如何更改节点值

时间:2017-05-26 03:13:58

标签: swift sprite-kit skspritenode

    func createBall(){
        ballS = SKNode()
        let ball = SKSpriteNode(imageNamed: "Ball")

        saw.zPosition = 2
        ballS.addChild(ball)
        self.addChild(ballS)
}

这会创建一个z位置为2的Ball节点。但是在运行游戏时,我想创建另一个az位置为1的球。我该怎么做,或者我必须创建一个全新的函数z位置为1的球节点?

3 个答案:

答案 0 :(得分:0)

如果每个ball精灵必须是ballS节点的子节点,那么您可以执行以下操作。

将ballS定义为属性(即在class定义之后但在任何函数之前)

let balls = SKNode()
didMove(to:)

添加ballS节点:

addChild(ballS) 

创建一个addBall功能:(不要将其称为createBall,除非所有功能都创建了球)

func addBall(withZPosition zPos: Int) {
    let newBall = SKSpriteNode(imageNamed: "Ball")
    newBall.zPosition = zPos
    ballS.addChild(newBall)
    }

然后只需致电addBall(withZPosition:)即可创建并添加新球:

addBall(withZPosition: 2)

如果你想要更多地控制所创建的球(例如你想在将它添加到场景之前更改它的某些属性),你可以创建一个createBall函数来创建一个新的球ball并返回新节点:

func createBall(withZPosition zPos: Int) -> SKSpriteNode {
    let newBall = SKSpriteNode(imageNamed: "Ball")
    newBall.zPosition = zPos
    return newBall
    }

并按如下方式使用:

let newBall = createBall(withZPosition: 2)
newBall.size = CGSize(x: 50, y:50)
ballS,addchild(newBall)

答案 1 :(得分:0)

你可以拥有一个全局变量,这样每当你想要改变你设置它并创建球

所以创建一个变量

var myZposition = 2

并在didmove的开头创建一个球,通过调用createBall()

进行查看
   func createBall(){
    ballS = SKNode()
    let ball = SKSpriteNode(imageNamed: "Ball")

    saw.zPosition = myZPosition
    ballS.addChild(ball)
    self.addChild(ballS)
 }

然后在这些之后如果要更改zPosition,只需将其设置在didmove的末尾即可查看

myZposition = 1

然后,只要你从这里创建球,你的zPosition就是1.如果你有很多球并且在zPosition中实现了一个更改以达到游戏的特定区域,这将是一个简单的设置 希望这有帮助

答案 2 :(得分:-1)

我建议使用一个参数,例如:

func createBall(z: Int) {
    ballS = SKNode()
    let ball = SKSpriteNode(imageNamed: "Ball")

    saw.zPosition = z
    ballS.addChild(ball)
    self.addChild(ballS)

}

并将其用作:

createBall(z: 2)