为了调试的目的,我试图画两条调试线。一条在字符面对的方向,一条在字符移动的方向。
我有以下函数,在更新方法中调用。
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);
}
红色的方向调试线工作得很完美,但是代表玩家实际移动方向的蓝色线似乎总是不正常,从不指向玩家移动的方向。
有谁知道如何解决这个问题?
问题在于你的movemendDir是一个带有欧拉角的Vector3,而不是一个方向矢量。
好消息是 rb.velocity 是你只需要的方向。文档中说。Unity速度也有X,Y,Z的速度来定义方向。
但是如果你使用这个速度矢量,线的长度将取决于速度。解决方案是 归一化 该向量。
你需要替换。
var movementDir = Quaternion.LookRotation(rb.velocity).eulerAngles;
换成:
var movementDir = rb.velocity.normalized;