在SpriteKit中,一旦箭头击中目标,使其跟随目标

时间:2018-10-02 18:50:32

标签: ios swift sprite-kit

我的游戏有一个从右向左移动的目标,一旦箭头被击中,它们就应该从右向左一起移动。我能够使其正常运行,但并不完美-箭头在目标中有些晃动,有时会从屏幕上消失。我相信它与帧速率有关,但我不确定如何解决。

这是我的代码:

func arrowCollideWithTarget() {
    arrows.last!.physicsBody?.velocity = CGVector(dx: 0, dy: 0)

    let followAction = SKAction.customAction(withDuration: TimeInterval(Int.max)) {
        node, elapsedTime in

        node.position.x += (self.targetLocation?.x)! - (self.latestTargetLocation?.x)!
    }

    arrows.last!.run(followAction)

}

1 个答案:

答案 0 :(得分:1)

非常简单的解决方案,move(toParent)

arrows.last!.move(toParent:target)

现在不需要任何操作,并且move(toParent)更改箭头的位置以使其与目标坐标系中的位置匹配,因此也无需平移箭头。

基本上,这完全符合您在现实生活中的想法。

当箭头击中目标时,您希望箭头成为该目标的“子级”。因此,如果您拿着目标,然后将其移动到新的墙壁上,则箭头将随箭头一起移动,因为箭头已连接到目标。