我想检测 SCNNode 何时停止在我用 swift 编写的 Scenekit 游戏中移动。
我有一个地板,有一个节点因重力而落向它。节点撞击地板,弹起,然后降落并固定在一个固定位置。
我需要添加一个函数来监视 SCNNode 并在休息时做一些事情。
在最终游戏中,我将有不同的 SCNNodes 以不同的速度下降,因此需要一个仅依赖于观察节点运动而不是等待设定时间的函数。
是否有任何内置于 Scenekit 的东西可以使用?如果没有,无论如何使用某种形式的计时器每半秒调用一个函数?我将如何设置计时器以及如何检查 SCNNode 以查看它是否已停止移动?
编辑:
正如所指出的那样,我的问题与SceneKit SCNPhysicsBody 得到 resting 的通知相同。那个提问者虽然使用的是 obj-c,但我使用的是 swift。我发现这里评论中的答案似乎好多了,对我有用。
James P 的评论为我解决了这个问题。
使用SCNSceneRendererDelegate
手段我可以在每个渲染周期重复运行代码以检查节点是否已停止移动。
然后我遇到了这个问题SceneKit: isResting 从不返回 true。isResting 总是错误的。获得我需要的唯一方法是使用Int(SCNNode.physicsBody?.velocity.z)
,当它为零时,我的节点完全放在地板上
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句