【问题标题】:Unity3D rotate GameObject to face direction of travelUnity3D旋转游戏对象以面对行进方向
【发布时间】:2015-12-29 10:28:40
【问题描述】:

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

我查看了 transform.LookAtQuaternion.lookRotation 函数,但现在确定如何应用它们。这是指示箭头速度的代码:

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

【问题讨论】:

    标签: unity3d trigonometry gameobject


    【解决方案1】:

    在刚体上设置约束。在您的情况下,它应该只围绕 x 轴旋转,以便它向上然后向下瞄准。

    剩下的,你只需在 throw 上设置初始旋转:

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

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

    【讨论】:

    • 我认为不需要任何约束。 velocity 应该足以确保箭头指向正确的方向。此外,旋转必须每帧更新,因为速度会随着时间的推移而改变其方向。
    • 如果不设置约束,模型很有可能开始旋转。这是因为模型上的刚体并不完全充当真正的箭头,您必须在前面设置一个,在身体上设置一个,在背面设置一个。箭头各部分的质量相同。如果为整个模型添加一个刚体,那么它很可能会出现意外行为。在这种情况下,限制以较低的成本伪造现实。您仍然需要根据速度更新箭头 x 旋转,使其按照弧形向上然后向下。
    • 非常真实,我忘记了有一个刚体会干预物体旋转的事实。好球!当然你只会设置旋转约束,而不是移动,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多