NavMeshAgent в Unity3D медленно поворачивает при маленьком ускорении
ускорение и текущая скорость как-то влияют на поворот и изменение направления движения NavMeshAgent как сделать чтобы ускорение движения было маленьким, а поворота большим, установка AngularSpeed в infinity не дает результа. или SetDestination тут не канает и надо писать свое хождение по пути?
Ответы (2 шт):
Автор решения: AC Studio
→ Ссылка
Скачайте и посмотрите как у меня устроено.
https://github.com/ARtronClassicStudio/Unity3D/blob/master/Grunt%20AI.unitypackage
Автор решения: Калян Петров
→ Ссылка
NavMeshAgent.velocity походу надо самому расчитывать,
для мгновенного изменения направления например m_Agent.velocity = m_Agent.desiredVelocity;
в итоге написал функцию поворота вектора velocity с ограниченной скоростью без учета его длинны
Vector3 rotate()
{
Quaternion desiredRot = Quaternion.FromToRotation(m_Agent.velocity, m_Agent.desiredVelocity);
float maxYAngleThisFrame = m_Agent.angularSpeed * Time.deltaTime;
float desiredYAngle = desiredRot.eulerAngles.y;
if (desiredYAngle > 180) desiredYAngle -= 360;
Debug.LogWarning(desiredYAngle);
if (Mathf.Abs(desiredYAngle) > maxYAngleThisFrame)
{
desiredRot.eulerAngles = new Vector3(desiredRot.eulerAngles.x, Mathf.Sign(desiredYAngle) * maxYAngleThisFrame, desiredRot.eulerAngles.z);
}
return desiredRot * m_Agent.velocity;
}