我正在建立我的第一个快速游戏,我很难为玩家实现生活。它应该在不同的屏幕位置显示三个生命,如微缩图像...我知道for循环可以完成这项工作,但我不知道如何编写它。当我尝试使用addChild(LifeIndex)将相同的精灵添加到屏幕时,它会抛出错误。
这是以下代码:
// Add Life to player
let lifeIndex = SKSpriteNode(imageNamed: "bullet.png")
var lifeCount = 3
lifeIndex.position = CGPoint(x: self.frame.size.width * -1.5, y: self.frame.size.height * 0.1)
let lifeIndexMove = SKAction.moveTo(CGPoint(x: size.width * 0.1, y: size.height * 0.1), duration: NSTimeInterval(0.7))
let lifeIndexRotation = SKAction.rotateByAngle(CGFloat(-2 * M_PI), duration: 0.3)
addChild(lifeIndex)
lifeIndex.runAction(SKAction.sequence([lifeIndexMove, lifeIndexRotation]))
我怎么能这样做三次?此外,我需要在moveTo中使用不同的点,因此它们可以并排,而不是彼此重叠。
答案 0 :(得分:2)
你不能简单地创建三个nodes
并将第一个定位如下:
lifeIndex.position = CGPoint(x: self.frame.size.width * -1.5, y: self.frame.size.height * 0.1)
第二个
lifeIndex2.position = CGPoint(x: self.frame.size.width * -1.5 + lifeIndex2.size.width * 1.5, y: self.frame.size.height * 0.1)
和第三个
lifeIndex3.position = CGPoint(x: self.frame.size.width * -1.5 + lifeIndex2.size.width * 3, y: self.frame.size.height * 0.1)
我认为这应该使他们恰好位于彼此旁边。
我认为这样做更简单,而不是创建一个函数并生成三个相似的节点
答案 1 :(得分:2)
试试这个:
// Add Life to player
var lifeIndexCount = 0
var positionAdd:CGFloat = 10.0
for lifeIndexCount in 0..<3 {
let lifeIndex = SKSpriteNode(imageNamed: "bullet.png")
lifeIndex.position = CGPoint(x: self.frame.size.width * -1.5, y: self.frame.size.height * 0.1)
let lifeIndexMove = SKAction.moveTo(CGPoint(x: (size.width * 0.1) + positionAdd, y: size.height * 0.1), duration: NSTimeInterval(0.7))
let lifeIndexRotation = SKAction.rotateByAngle(CGFloat(-2 * M_PI), duration: 0.3)
lifeIndex.runAction(SKAction.sequence([lifeIndexMove, lifeIndexRotation]))
addChild(lifeIndex)
positionAdd = positionAdd + 30.0
}