首页 > 解决方案 > RigidbodyController 背景口吃(我是否正确移动了我的 Rigidbody 控制器?)

问题描述

我正在开发一个非常基本的播放器控制器,并且在使用刚体播放器时遇到了很多口吃。我还有一个运行非常流畅的角色控制器播放器,两个测试都在高 fps 600 ish(垂直同步关闭)。在这两种情况下,我都使用统一电影机的 freelook 相机,并将 CinemachineBrain 更新模式设置为固定刚体场景。我尝试在刚体上打开插值并更改 FixedUpdateTimestep(我试图避免),但我想知道它是否与我移动刚体的方式有关?下面是一个显示问题的视频,请确保全屏观看并注意积木楼梯(如果不清楚红色播放器是基于 Rigidbody 的,而绿色播放器使用 CharacterController 组件)。

我的刚体运动代码(很简单);

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);
}

展示问题的视频

标签: c#unity3drigid-bodies

解决方案


我相信如果你想直接移动刚体,你需要为它打开运动学标志。否则所有其他刚体和通过你的运动施加到它的力都会影响它并导致抖动或奇怪的行为。

请参阅此页面:https ://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html


推荐阅读