Заикание фона RigidbodyController (правильно ли я перемещаю свой контроллер Rigidbody?) - PullRequest
0 голосов
/ 10 февраля 2020

Я работаю над контроллером плеера, очень по основам 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);
}

Видео, демонстрирующее проблему

1 Ответ

0 голосов
/ 11 февраля 2020

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

См. Эту страницу: https://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html

...