我在多次旋转节点时遇到问题。我正在制作一个带有滚动球的游戏,虽然我可以将球沿一个轴或两个轴旋转相同的量,但我不能以部分角度旋转。
例子:
// Roll right 90 -
SCNNode.pivot = SCNMatrix4MakeRotation(Float(M_PI_2), 0, 1, 0)
// Roll right 180 -
SCNNode.pivot = SCNMatrix4MakeRotation(Float(M_PI_2) * 2, 0, 1, 0)
// Roll up 90 -
SCNNode.pivot = SCNMatrix4MakeRotation(Float(M_PI_2), 1, 0, 0)
// Roll up & right 90 -
SCNNode.pivot = SCNMatrix4MakeRotation(Float(M_PI_2), 1, 1, 0)
所有这些都可以工作,但是如果我需要将球向右滚动 180 度和 90 度,我就被卡住了。
即使有某种方法可以将向量加在一起也可以。
非常感谢任何帮助。
最佳答案
要结合 rotation matrices 的效果,请使用矩阵乘法。
要在 SceneKit 中做到这一点,您可以:
SCNMatrix4Mult
将它们相乘。 SCNMatrix4Rotate
将旋转直接应用于现有矩阵。 (这等效于 SCNMatrix4MakeRotation
+ SCNMatrix4Mult
选项;它只是将这些步骤组合到一个函数调用中。) 如果转换顺序对您的应用很重要,请记住 matrix multiplication order is the reverse of transformation order 。
关于Swift Scenekit - 多次旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27503597/