You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

角色掉穿地面问题求助:Rigidbody配置与检测逻辑异常排查

角色掉穿地面问题排查与修复

核心冲突:CharacterController与Rigidbody混用

你同时给角色挂载了CharacterController和Rigidbody组件,这两个组件的物理逻辑完全冲突——CharacterController有独立的碰撞、移动计算体系,和Rigidbody的物理系统无法兼容,这是角色掉穿地面的核心原因。

针对性修复步骤

  • 移除冗余组件:删掉角色身上的Rigidbody组件,CharacterController本身就能处理移动、碰撞与地面检测,无需依赖Rigidbody。
  • 修正重力与落地逻辑:原代码的重力计算存在符号错误,且落地时对垂直速度的赋值不合理,会导致持续向下的力触发穿模。修正后的代码如下:
void Update()
{
    Move();
    isGrounded = Physics.CheckSphere(GroundCheck.position, groundRadius, (int)whatisGround);

    if (isGrounded)
    {
        // 落地时重置垂直速度,避免持续向下的力导致穿模
        velocity.y = 0f;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            velocity.y = JumpForce;
        }
    }
    else
    {
        // 正常施加向下的重力
        velocity.y -= Gravity * Time.deltaTime;
    }

    // 必须用CharacterController应用垂直方向的速度
    controller.Move(velocity * Time.deltaTime);
}
  • 优化地面检测设置:确保GroundCheck的Transform位置紧贴角色脚底,groundRadius不要过大(建议0.1-0.3之间),同时确认whatisGround图层仅包含地面对象。
  • 调整CharacterController参数:将Skin Width设置为0.01-0.05,这能有效减少碰撞穿模的概率;把Min Move Distance设为0,避免微小移动被忽略。

内容的提问来源于stack exchange,提问作者user19548636

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:39:18