Sprite kit SpriteKit如何检测节点是否移动

Sprite kit SpriteKit如何检测节点是否移动,sprite-kit,position,game-physics,skspritenode,Sprite Kit,Position,Game Physics,Skspritenode,对于我的游戏,我需要检测节点是否仍在移动。现在我尝试在一个时间间隔内比较新旧位置。如果位置具有相同的值,则节点不会移动。反之亦然。诸如此类: if aStonesPositionsOld[index] == aStonesPositionsNew[index] { print("# stone \(index) is not moving") } 有人知道检查节点是否移动的更好更简单的方法吗 更新。Kni

对于我的游戏,我需要检测节点是否仍在移动。现在我尝试在一个时间间隔内比较新旧位置。如果位置具有相同的值,则节点不会移动。反之亦然。诸如此类:

 if aStonesPositionsOld[index] == aStonesPositionsNew[index] {
                        print("# stone \(index) is not moving")
                    }
有人知道检查节点是否移动的更好更简单的方法吗

更新。KnighOfDragon问题的答案(节点如何开始移动?) 节点在被触摸时开始移动,或者更准确地说,是用手指移动。下面是一个代码:

      if touching {

            let dt:CGFloat = 1.0/60.0
            let distance = CGVector(dx: touchPoint.x-aCuesMe[touchingNr].position.x, dy: touchPoint.y-aCuesMe[touchingNr].position.y)

            velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt)
            aCuesMe[touchingNr].physicsBody!.velocity=velocity
        }

为此,您可以从
GameplayKit
使用
GKAgent2D
。它具有属性
速度
。有关更多信息,请阅读苹果的文档:

观看视频:

为此,您可以从
GameplayKit
使用
GKAgent2D
。它具有属性
速度
。有关更多信息,请阅读苹果的文档:

观看视频:

由于要使用物理引擎移动对象,所以只需检查速度即可

if let v = aCuesMe[someIndex].physicsBody?.velocity {
    if v == CGVector(dx: 0, dy: 0) {
        // Object has 0 velocity and is not moving
    }
}

因为你正在使用物理引擎移动物体,你所要做的就是检查速度

if let v = aCuesMe[someIndex].physicsBody?.velocity {
    if v == CGVector(dx: 0, dy: 0) {
        // Object has 0 velocity and is not moving
    }
}

需要更多详细信息,节点如何开始移动?回答。请参阅更新我的帖子。需要更多详细信息,节点如何开始移动?已回答。请参阅我的帖子的更新。