Войти
ПрограммированиеФорумОбщее

Unity RootMotion персонаж бегает сквозь стены при 20 ФПС

#0
21:32, 30 окт. 2018

Привет! При 20 ФПС персонаж достаточно легко ныряет сквозь стены, при 60 такой проблемы нету

В конце кадра LateUpdate мы берём смещение анимации — те смещение от рут моушена и прибавляем его к позиции боди

По уму, прибавлять к позиции надо в FixedUpdate, но как узнать — сколько будет FixedUpdate в след кадре? 1, 2, 3?, так как ФПС может меться

Или надо поступать иначе ?


#1
23:23, 30 окт. 2018

FDsagizi

Или надо поступать иначе ?

This
#2
10:44, 31 окт. 2018

Выставить в инспекторе или коде: animator.updateMode = AnimatorUpdateMode.AnimatePhysics

#3
11:14, 31 окт. 2018

FDsagizi
> В конце кадра LateUpdate мы берём смещение анимации — те смещение от рут
> моушена и прибавляем его к позиции боди
Неправильно.

Обновлять надо не в LateUpdate, а в OnAnimatorMove. И не менять позицию у Rigidbody, а управлять скоростью или двигать его через MovePosition().

Тогда движение буден обсчитываться в физическом цикле и проблем не будет.

#4
8:41, 2 ноя. 2018

mahrizh
alexey.ch
Спасибо! По итогу

animator.updateMode = AnimatorUpdateMode.AnimatePhysics
а изменения беру в OnAnimatorMove через

animator.deltaPosition;
animator.deltaRotation; - о них к стати в документации по OnAnimatorMove не написано, что сначала поставило в тупик!

ПрограммированиеФорумОбщее