SceneKit使用扭矩旋转节点会产生与通过动画

时间:2016-01-30 14:38:14

标签: swift scenekit

我通过在每个更新周期应用扭矩来沿着Z旋转带有SCNPhysics主体的SCNNode。

func renderer(renderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval) {
    print(box.presentationNode.rotation)
    box.physicsBody?.applyTorque(SCNVector4(0, 0, 1, 0.06), impulse: false)
}

每个更新周期我也会打印出presentationNode的轮换。我所看到的对我来说没有意义。打印输出看起来像这样,与...结合在一起。

SCNVector4(x:0.0,y:0.0,z:0.0,w:0.0)

SCNVector4(x:0.0,y:0.0,z:1,w:0.4)

SCNVector4(x:0.0,y:0.0,z:1,w:0.9)

...

SCNVector4(x:0.0,y:0.0,z:1,w:4.18)

SCNVector4(x:0.0,y:0.0,z:-1,w:2.09)

SCNVector4(x:0.0,y:0.0,z:-1,w:1.97)

...

SCNVector4(x:0.0,y:0.0,z:1,w:0)

SCNVector4(x:0.0,y:0.0,z:1,w:0.1)

SCNVector4(x:0.0,y:0.0,z:1,w:0.23)

...

SCNVector4(x:0.0,y:0.0,z:1,w:4.18)

SCNVector4(x:0.0,y:0.0,z:-1,w:2.09)

所以轮换' w'从0到4.18然后在1更新周期中转移到2.09并开始倒计数,其中z为负数。当' w'倒计时到零,z变为正数,再次计入4.18。

如果您使用SCNAction旋转框并打印结果,这与您获得的数字不同

当您像这样旋转时

box.runAction(SCNAction.rotateByX(0, y: 0, z: 50, duration: 100))

' w'从0.0到6.28(2pi),然后倒计数到零(这是更有意义的)。打印出来就像这样浓缩

SCNVector4(x:0.0,y:0.0,z:0.0,w:0.0)

SCNVector4(x:0.0,y:0.0,z:1,w:0.4)

...

SCNVector4(x:0.0,y:0.0,z:1,w:6.28)

SCNVector4(x:0.0,y:0.0,z:-1,w:6.21)

SCNVector4(x:0.0,y:0.0,z:-1,w:6.15)

...

SCNVector4(x:0.0,y:0.0,z:1,w:0.0)

如果我的要求不清楚或者你看到不同的结果,请告诉我。

谢谢

0 个答案:

没有答案