Проведение линии в направлении движения игрока - PullRequest
0 голосов
/ 29 мая 2020

В целях отладки я пытаюсь нарисовать 2 строки отладки. Один в направлении, в котором смотрит персонаж, и один в направлении, в котором он движется.

У меня есть следующая функция, которая вызывается в методе обновления.

    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);
    }

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

Кто-нибудь знает, как я могу это исправить?

1 Ответ

1 голос
/ 29 мая 2020

Проблема в том, что ваш movemendDir - это Vector3 с углами Эйлера, а не вектор направления.

Хорошая новость в том, что rb.velocity - это направление, которое вам только нужно. В документации сказано: Скорость Unity также имеет скорость по осям X, Y и Z, определяющую направление.

Но если вы используете этот вектор скорости, длина линии будет зависеть от скорости . Решение: нормализовать этот вектор.

Необходимо заменить:

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

на:

var movementDir = rb.velocity.normalized;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...