Я пытаюсь определить направление преобразования. Первоначально я пытался сделать это, отслеживая твердое тело.velocity, но это свойство кажется ненадежным, поэтому мне приходится вычислять направление вручную. Желтая линия dr aws в порядке, и она указывает в неправильном направлении, однако кажется, что она задерживается
Я вызываю следующий метод в своем методе обновления:
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;