NavMeshAgent в Unity3D медленно поворачивает при маленьком ускорении

ускорение и текущая скорость как-то влияют на поворот и изменение направления движения NavMeshAgent как сделать чтобы ускорение движения было маленьким, а поворота большим, установка AngularSpeed в infinity не дает результа. или SetDestination тут не канает и надо писать свое хождение по пути?


Ответы (2 шт):

Автор решения: Калян Петров

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; 
}
→ Ссылка