@ zambari
Посмотрев на ваш ответ, я провел небольшое исследование по преобразованию кватернионов.Проблема с вашим решением состоит в том, что «thisYaw-_lastYaw» не перемещается в локальное пространство, и поэтому ось y может сильно меняться от кадра к кадру, таким образом, вычисленная разница может быть намного больше, чем фактическое изменение.Перемещение уравнения в локальное пространство решает эту проблему, если только не существует очень высокой угловой скорости, которую мне не нужно решать.(На заднем сайте, я думаю, я мог бы также использовать угловую скорость, чтобы найти это, но я отвлекся.)
Вот мое рабочее решение!Спасибо за ввод.
private float _SetChangeInYawAngle()
{
Quaternion LocalRotation = Quaternion.Inverse(m_lastYawRotation) * transform.rotation;
float yaw = LocalRotation.eulerAngles.y;
yaw = yaw > 180 ? yaw - 360 : yaw;
m_currentAngle -= yaw;
m_lastYawRotation = transform.rotation;
return m_currentAngle;
}