Я работаю над контроллером плеера, очень по основам c, и при использовании плеера с жестким корпусом у меня возникает заикание. У меня также есть плеер контроллера персонажа, который работает очень гладко, оба теста на высоких fps 600 i sh (v-syn c выключен). Я использую камеру freelook cinemachine в обоих случаях и устанавливаю фиксированный режим обновления CinemachineBrain для сцены Rigidbody. Я попытался включить Интерполяцию на Rigidbody и изменить FixedUpdateTimestep (которого я стараюсь избегать), но мне интересно, имеет ли это какое-либо отношение к тому, как я двигаю Rigidbody? Ниже видео, чтобы показать проблемы, убедитесь, что вы смотрите его в полноэкранном режиме и обратите внимание на блокпосты (в случае, если неясно, что красный плеер основан на Rigidbody, а зеленый использует компонент CharacterController). Вы можете увидеть огромную разницу в сглаживании между сценами.
Код движения My Rigidbody (Очень простой);
void Update()
{
_isGrounded = Physics.CheckSphere(_groundChecker.position, GroundDistance, Ground, QueryTriggerInteraction.Ignore);
_inputs = Vector3.zero;
_inputs.x = Input.GetAxis("Horizontal");
_inputs.z = Input.GetAxis("Vertical");
if (_inputs != Vector3.zero)
transform.forward = _inputs;
}
void FixedUpdate()
{
_body.MovePosition(_body.position + _inputs * Speed * Time.fixedDeltaTime);
}
Видео, демонстрирующее проблему