Unity - увеличение масштаба времени странным образом влияет на скорость NavMeshAgent - PullRequest
0 голосов
/ 22 октября 2019

У меня есть BlendTree, который управляет моей анимацией для бездействия / ходьбы / бега. Это контролируется переменной speedPercent.

. По какой-то причине, когда я увеличиваю TimeScale выше 1, стоя на месте, agent.velocity начинает добавлять значение к оси Y, то есть (0, 1.6, 0), вызывая величинувернуть значение.

Все управляется по умолчанию методами NavMeshAgent (например, SetDestination).

void Update()
{
    float speedPercent = agent.velocity.magnitude / agent.speed;
    animator.SetFloat("speedPercent", speedPercent);
}

1 Ответ

0 голосов
/ 22 октября 2019

Unity's NavMeshAgent может иметь неожиданные значения для скорости, когда у него нет пути. Я не уверен, почему, но, похоже, это обычная проблема.

Я бы порекомендовал обходной путь: используйте троичный оператор, чтобы использовать 0f вместо agent.velocity.magnitude / agent.speed, если агент в данный момент не идет по пути:

void Update()
{
    float speedPercent = agent.hasPath ? agent.velocity.magnitude / agent.speed : 0f;
    animator.SetFloat("speedPercent", speedPercent);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...