在玩家移动的方向上画一条线。

问题描述 投票:0回答:1

为了调试的目的,我试图画两条调试线。一条在字符面对的方向,一条在字符移动的方向。

我有以下函数,在更新方法中调用。

    void DrawDirectionLines()
    {
        var wishDir = transform.position + transform.forward;
        var movementDir = Quaternion.LookRotation(rb.velocity).eulerAngles;

        Debug.DrawLine(transform.position, transform.position + transform.forward * 5, Color.red);
        Debug.DrawLine(transform.position, transform.position + movementDir * 5, Color.blue);
    }

红色的方向调试线工作得很完美,但是代表玩家实际移动方向的蓝色线似乎总是不正常,从不指向玩家移动的方向。

有谁知道如何解决这个问题?

unity3d
1个回答
1
投票

问题在于你的movemendDir是一个带有欧拉角的Vector3,而不是一个方向矢量。

好消息是 rb.velocity 是你只需要的方向。文档中说。Unity速度也有X,Y,Z的速度来定义方向。

但是如果你使用这个速度矢量,线的长度将取决于速度。解决方案是 归一化 该向量。

你需要替换。

var movementDir = Quaternion.LookRotation(rb.velocity).eulerAngles;

换成:

var movementDir = rb.velocity.normalized;
© www.soinside.com 2019 - 2024. All rights reserved.