Дрожание камеры в unity при установке положения в Update и настройке поворота камеры в LateUpdate

#c# #unity3d

#c# #unity3d

Вопрос:

Я понимаю, что это довольно часто задаваемый вопрос, однако мне еще предстоит найти решение для моего конкретного сценария:

Я создаю серверную авторитетную игру, сервер вычисляет движение и отправляет его клиенту в виде Вектора3. Этот Вектор3 сохраняется в переменной при получении, а в обновлении позиция устанавливается равной вектору 3.

Поворот камеры зависит от клиента, поворот вычисляется на основе дельты мыши и добавляется к текущему повороту. Вращение по оси Y применяется ко всему корпусу (для поворота), а вращение по оси X применяется к камере (для просмотра вверх и вниз). Все это делается в late update

При перемещении и просмотре объекта он, кажется, дрожит очень быстро. Все найденные мной решения не работают, я предполагаю, что это связано с тем, что они предназначены для устранения дрожания камеры при движении жесткого тела

Комментарии:

1. Не могли бы вы опубликовать свой код и, возможно, добавить видео о том, о каком именно дрожании вы говорите? Я думаю, проблема может заключаться просто в том, как вы получаете значения из-за задержки сервера / сети.. вероятно, вам следует добавить какую-то интерполяцию ( Vector3.Lerp и т. Vector3.MoveTowards Д.)

Ответ №1:

При работе с физикой, поворотами, позициями и другими связанными с этим вещами рекомендуется использовать FixedUpdate вместо Update .

Почему это происходит?

https://docs.unity3d.com/ScriptReference/MonoBehaviour .FixedUpdate.html

Ну, Fixed Update это называется фиксированной частотой кадров и более надежно для физики.

Комментарии:

1. Но когда я использую FixedUpdate для камеры, кажется, что при вращении она имеет более низкую частоту кадров

2. Попробуйте использовать FixedUpdate для определения положения вашего проигрывателя и использовать Update для камеры. Также попробуйте установить положение камеры вне разделителя