unity3d 如何将移动的游戏对象的方向可视化为场景中的矢量?

cpjpxq1n  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(166)

所以我有一个移动的游戏对象,我想把它的速度方向可视化为一个箭头(矢量),我找不到一个函数,使我能够在场景中显示矢量!
Vector 3方向;我一直在找方法在场景中显示这个矢量。

juzqafwq

juzqafwq1#

假设你正在寻找一个简单的Gizmo来可视化速度矢量。在这种情况下,你可以使用OnDrawGizmos()来绘制它,然后在游戏视图中使用位于窗口最右边的Gizmo切换来启用Gizmo:

对于代码本身,您可以使用Handles.ArrowHandleCap来可视化Rigidbody的速度,如下所示:

[RequireComponent(typeof(Rigidbody))]
public class VelocityVisualizer : MonoBehaviour
{
    // The length of the arrow, in meters
    [SerializeField] [Range(0.5F, 2)] private float arrowLength = 1.0F;

    private Rigidbody _rigidbody;

    private void Start()
    {
        _rigidbody = GetComponent<Rigidbody>();
    }

    private void OnDrawGizmos()
    {
        if (!Application.isPlaying) return;

        var position = transform.position;
        var velocity = _rigidbody.velocity;

        if (velocity.magnitude < 0.1f) return;

        Handles.color = Color.red;
        Handles.ArrowHandleCap(0, position, Quaternion.LookRotation(velocity), arrowLength, EventType.Repaint);
    }
}

将此脚本附加为具有Rigidbody的游戏对象的组件,它将使用箭头显示其速度方向

相关问题