如何知道一个 SKSpriteNode 是不是在运动或停止?

How to know whether an SKSpriteNode is not in motion or stopped?

在我的游戏中,我需要在 SKSpriteNode 停止移动后更改一些设置。

首先, 我对我的 SKSpriteNode 施加力,因此它由于作用在它上面的力而开始移动。 现在,我需要知道它什么时候停止移动。

我知道 SKSpriteNode 有一个 speed 属性,但它始终默认设置为 1.0。

有什么想法吗?

您可以子class SKSpriteNode 并在其上添加一个previousPosition 属性,您可以在-didFinishUpdateMethod 上更新它。如果位置没有变化,您可以假设节点已停止(您可能必须获得最后几个位置的中值才能使其平滑)。速度属性有些不同,根据class参考,速度是:

A speed modifier applied to all actions executed by a node and its descendants.

希望对您有所帮助! 丹尼

您可以使用如下方式检查节点的速度:

if((self.physicsBody.velocity.dx == 0.0) && (self.physicsBody.velocity.dy == 0.0)) {
    NSLog(@"node has stopped moving");
}

放置上述代码的通常位置是在更新方法中。

由于您使用的是物理学,因此您可以使用 SKPhysicsBodyresting 属性。

if sprite.physicsBody?.resting == true {
    println("The sprite is resting")
} else {
    println("The sprite is moving")
}

希望对您有所帮助。