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的球节点?
答案 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)