【问题标题】:RigidbodyController background stutter (Am I moving my Rigidbody controller correctly?)RigidbodyController 背景口吃(我是否正确移动了我的 Rigidbody 控制器?)
【发布时间】:2020-05-25 08:05:53
【问题描述】:

我正在开发一个非常基本的播放器控制器,并且在使用刚体播放器时遇到了很多口吃问题。我还有一个运行非常流畅的角色控制器播放器,两个测试都在高 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);
}

Video showcasing the issue

【问题讨论】:

    标签: c# unity3d rigid-bodies


    【解决方案1】:

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

    查看此页面:https://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html

    【讨论】:

    • 我不相信玩家刚体需要运动,因为它不可能与其他物体发生碰撞。在旁注中,我确实对其进行了快速测试,但没有任何运气。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2012-09-02
    • 2014-10-23
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多