我正试图确定一个变换的方向。我最初试图通过跟踪 rigidbody.velocity 来确定方向,但该属性似乎不可靠,所以我不得不手动计算方向。黄线画得很好,而且它确实指向了错误的方向,但是它似乎是延迟的。
我在更新方法中调用了以下方法。
void DetermineMovementDirection()
{
currentLoc = (transform.position - prevLoc) / Time.deltaTime;
Vector3 t = (prevLoc + currentLoc).normalized;
Debug.DrawLine(transform.position, transform.position + t * 5, Color.yellow);
}
我希望黄线始终指向玩家移动的方向 而不是有很长的延迟时间 我怎样才能解决这个问题?
按照要求的移动函数。
void Update()
{
float inputZ = Input.GetAxis("Horizontal");
float inputX = Input.GetAxis("Vertical");
if (movementAllowed)
if (inputZ != 0 || inputX != 0)
{
transform.eulerAngles = new Vector3(0, Mathf.Atan2(inputZ, inputX) * 180 / Mathf.PI, 0);
transform.Translate(moveSpeed * inputZ * Time.deltaTime, 0f, moveSpeed * inputX * Time.deltaTime, Space.World);
}
}
而我只是在更新方法的最后进行更新。
prevLoc = transform.position;