我工作的一個自上而下的空間遊戲用斯威夫特和SceneKit建有以下設置:使用PhysicsBody旋轉的SCNNode匹配搖桿的弧度
SCNNode代表飛船
- 旋轉被限制在y軸上;值範圍從
-M_PI_2
到M_PI + M_PI_2
- 運動被限制在x和z軸上。
遊戲控制器拇指操縱桿輸入
- 值的範圍從
-1.0
到1.0
在x軸和y軸。
當遊戲控制器的拇指棒改變位置時,宇宙飛船應該使用物理體旋轉以匹配拇指指杆的弧度。
所述搖桿的目標弧度可以與計算以下:
let targetRadian = M_PI_2 + atan2(-y, -x)
所述節點的當前弧度可以得到以下:
let currentRadian = node.presentationNode.rotation.w * node.presentationNode.rotation.y
NSTimeInterval deltaTime
提供時間,以秒自上次旋轉計算以來。
節點如何使用angularVelocity
,applyTorque
或其他物理方法旋轉到達targetRadian
?