Unity3D将游戏对象旋转到面移动方向

Unity3D将游戏对象旋转到面移动方向,unity3d,trigonometry,gameobject,Unity3d,Trigonometry,Gameobject,我正在使用Unity3D创建一个程序,在该程序中,玩家向目标发射箭头。确保箭头在空中旋转的最佳方法是什么?旋转的角度取决于箭头的移动角度?(即箭头在上升时朝上,下降时朝下) 我已经看过了变换。LookAt和四元数。lookRotation函数,但现在我确定它们可以如何应用。下面是指示箭头速度的代码: newArrow.GetComponent<Rigidbody>().velocity = new Vector3 (5*(transform.position.

我正在使用Unity3D创建一个程序,在该程序中,玩家向目标发射箭头。确保箭头在空中旋转的最佳方法是什么?旋转的角度取决于箭头的移动角度?(即箭头在上升时朝上,下降时朝下)

我已经看过了变换。LookAt四元数。lookRotation函数,但现在我确定它们可以如何应用。下面是指示箭头速度的代码:

            newArrow.GetComponent<Rigidbody>().velocity = new Vector3 (5*(transform.position.x - mousePos.x), 10*(transform.position.y - mousePos.y), 0);
newArrow.GetComponent().velocity=newvector3(5*(transform.position.x-mousePos.x),10*(transform.position.y-mousePos.y),0);

设置刚体上的约束。在你的情况下,它应该只围绕x轴旋转,这样它就可以上下瞄准

对于其余部分,您只需在投掷时设置初始旋转:

newArrow.transform.rotation = Quaternion.LookRotation(velocity);

这可能需要根据模型初始方向进行一些调整

在刚体上设置约束。在你的情况下,它应该只围绕x轴旋转,这样它就可以上下瞄准

对于其余部分,您只需在投掷时设置初始旋转:

newArrow.transform.rotation = Quaternion.LookRotation(velocity);

这可能需要根据模型初始方向进行一些调整

我认为不需要任何约束<代码>速度应足以确保箭头指向正确的方向。此外,旋转必须每帧更新,因为速度将随时间改变其方向。如果不设置约束,模型很有可能开始旋转。这是因为模型上的刚体并不是真正的箭头,您必须将一个设置在前面,一个设置在身体上,一个设置在后面。箭头各部分的质量相同。如果为整个模型添加一个刚体,则很可能会出现意外行为。在这种情况下,以较低的成本伪造现实是有限制的。你仍然需要根据速度来更新箭头x的旋转,使其沿着弧线形状指向上,然后向下。事实上,我忘记了有一个刚体会干扰物体的旋转这一事实。好球!当然,你只会设置旋转约束,而不是移动,对吗?我认为不需要任何约束<代码>速度应足以确保箭头指向正确的方向。此外,旋转必须每帧更新,因为速度将随时间改变其方向。如果不设置约束,模型很有可能开始旋转。这是因为模型上的刚体并不是真正的箭头,您必须将一个设置在前面,一个设置在身体上,一个设置在后面。箭头各部分的质量相同。如果为整个模型添加一个刚体,则很可能会出现意外行为。在这种情况下,以较低的成本伪造现实是有限制的。你仍然需要根据速度来更新箭头x的旋转,使其沿着弧线形状指向上,然后向下。事实上,我忘记了有一个刚体会干扰物体的旋转这一事实。好球!当然,你只会设置旋转限制,而不是移动,对吗?