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

Unity角色控制器与胶囊碰撞体分离问题求助

Unity Character Controller与胶囊碰撞体冲突导致分离的解决方法
  • 移除额外胶囊碰撞体,复用Character Controller内置碰撞体
    Character Controller组件本身自带胶囊碰撞检测,完全不需要额外添加胶囊碰撞体。两个碰撞体在运行时的物理交互会互相挤压,直接导致角色模型与控制器分离。你可以直接在Character Controller的Inspector面板中调整Radius、Height、Center参数,匹配角色模型的尺寸,这样既不会出现物体掉落的问题,也能正常用Character Controller实现移动控制。

  • 修正旋转脚本的作用对象
    你绑定在“Body”上的旋转脚本,可能因为双碰撞体的偏移导致旋转轴出错。建议将旋转逻辑直接作用在挂载Character Controller的根Transform上,示例代码如下:

    public float rotateSpeed = 5f;
    
    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        transform.Rotate(0, horizontalInput * rotateSpeed * Time.deltaTime, 0);
    }
    

    如果必须在Body上控制旋转,需要确保Body与根物体位置同步,避免碰撞导致的偏移,可在Body的脚本中添加同步逻辑:

    void Update()
    {
        transform.position = GetComponentInParent<CharacterController>().transform.position;
    }
    
  • 临时解决方案:将额外碰撞体设为触发器
    如果暂时无法移除胶囊碰撞体,可以勾选碰撞体的Is Trigger选项,让它不再参与物理碰撞。但这种方法可能影响其他依赖该碰撞体的逻辑,仅作为应急方案,优先推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:35:41