我通过在每个更新周期应用扭矩来沿着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)
如果我的要求不清楚或者你看到不同的结果,请告诉我。
谢谢