Zefirot
@Zefirot

Как вычислить разницу между Quaternion?

Делаю плавный поворот, соответственно проверяю не дошел ли еще поворот до нужной точки
private Quaternion RotationCurrent{ get{ return transform.rotation; }set{ transform.rotation = value; }}
private Quaternion RotationRequired;
if(RotationCurrent != RotationRequired){
    RotationCurrent = Quaternion.Lerp(RotationCurrent, RotationRequired, Time.deltaTime * 5f);
     //if(Quaterion.Distance(RotationCurrent, RotationRequired) < 0.1f){ RotationCurrent = RotationRequired; }
    }

Часто замечаю что условие до конца не доходит так как могут там колебаться какие-то тысячные и т.д., Vector3 можно проверить и установить с помощью Distance, у Quaterion такого нет как я понял.
Подскажите как тогда как вычислить?
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Начнём с того, что тут ошибка RotationCurrent = Quaternion.Lerp(RotationCurrent,, интерполировать надо от одних и тех же границ постепенно увеличивая значение интерполяции. А сейчас у вас какой-то предел, стремящийся к финишу, но не достигающий его. Вот у вас и не сходится. Лерп при 100% (т.е. единице) вернёт как раз финальное значение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы