Задержка при расчете направления движения игроков - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь определить направление преобразования. Первоначально я пытался сделать это, отслеживая твердое тело.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);
    }

Я бы ожидайте, что желтая линия всегда будет указывать в том направлении, в котором двигался игрок, а не иметь длительную задержку. Как я могу это исправить?

enter image description here

По запросу функция движения:

    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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...