Страница 1 из 1

Проблема с вращением Rigidbody

СообщениеДобавлено: 24 дек 2020, 01:18
Destroyer551
Всем привет! Я работаю над своим контроллером от первого лица, основанном на Rigidbody. Столкнулся с проблемой вращения, которую лучше всего продемонстрирует видео:
https://youtu.be/90UokE9j6TY

Как видно, персонаж дрожит при вращении мышью.

Иерархия у меня следующая: Main Camera - независимый объект, который следует объекту Camera Mount внутри моего персонажа.

Весь инпут я собираю в функции Update()

Персонажа двигаю и вращаю в FixedUpdate()
Синтаксис:
Используется csharp
rigidbody.velocity = MoveDirection + (Vector3.up * m_velocity);
 
float yRot = playerCamera.transform.rotation.eulerAngles.y;
 
fps_Rigidbody.MoveRotation(Quaternion.Euler(0.0f, yRot, 0.0f));


Камера двигается и вращается в LateUpdate()
Синтаксис:
Используется csharp
playerCamera.transform.position = cameraMount.position;
 
playerCamera.transform.rotation = Quaternion.Euler(x, y, 0);


Подскажите пожалуйста, каким образом мне вращать персонажа, чтобы он не дрожал?

Re: Проблема с вращением Rigidbody

СообщениеДобавлено: 24 дек 2020, 01:50
1max1
Похоже на проблемы интерполяции. Попробуй в rb в инспекторе поставить ее.

Re: Проблема с вращением Rigidbody

СообщениеДобавлено: 24 дек 2020, 03:33
Destroyer551
Интерполяция в инспекторе выставлена.

Re: Проблема с вращением Rigidbody

СообщениеДобавлено: 24 дек 2020, 20:00
Alkos26Rus
Возможно из за того что камера вращается в LateUpdate а персонаж в FixedUpdate. Если я правильно понял то камера вращяется мышкой а персонажу присваивается поворот камеры, если так то в начале идет фиксед апдейт и персоаж получает угол камеры, затем идет лэйт апдейт и камера получает обновленный угол со смещением и на выходе персонаж всегда отстает от камеры. Поэтому можно попробовать поворачивать камеру в простом апдейте а присваивать персонажу поворот камеры в лэйт апдейте, фиксет апдейт как по мне здесь вобще не нужен, только фпс жрет.