使用Swift在SpriteKit中添加生命精灵

时间:2015-08-03 17:49:48

标签: swift sprite-kit

我正在建立我的第一个快速游戏,我很难为玩家实现生活。它应该在不同的屏幕位置显示三个生命,如微缩图像...我知道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中使用不同的点,因此它们可以并排,而不是彼此重叠。

2 个答案:

答案 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

    }