我在Scenekit中制作一个第一人称摄影机,角色并没有相对于旋转移动。相反,它相对于世界轴心运动。我希望我的游戏是这样的,当玩家向前挥动时,角色在自己的X轴上向前移动。不是沿着世界的X轴。我试着用正弦和余弦来补偿这个,但没用。这是我的代码:

    func lookGestureRecognized(gesture: UIPanGestureRecognizer) {
    let velocity = gesture.velocityInView(sceneView)
    let rotationAngle = heroNode.presentationNode().rotation.w * heroNode.presentationNode().rotation.y
    var impulse = SCNVector3Make(Float(velocity.x)/50, 0, Float(velocity.y)/50)
    impulse = SCNVector3(x: impulse.x * cos(rotationAngle), y: 0, z: impulse.z * sin(rotationAngle))
    heroNode.physicsBody?.applyForce(impulse, impulse: true)
}

这仍在使角色朝着错误的刷卡方向移动。有人知道如何使角色相对于其旋转移动吗?
谢谢,如果需要请澄清

最佳答案

rotation属性由旋转轴和旋转角构成。如果要检索沿X轴的旋转,可以使用eulerAngles属性。

10-07 19:05