Unity中Character Controller不受重力影响问题求助
检查Character Controller组件参数
确认Slope Limit(坡度限制)未设得过高,Step Offset(台阶偏移)数值无异常;同时查看Center(中心)是否偏离模型重心,导致角色判定框悬浮在地面上方。确认地面碰撞体配置
地面必须添加有效碰撞体(如Box Collider、Mesh Collider),且不能勾选Is Trigger——触发模式下Character Controller不会与地面产生物理交互。另外检查地面所在图层是否在Character Controller的Layer Mask(图层遮罩)范围内,未包含的话角色会无视地面。排查脚本干扰
检查所有控制角色的脚本,看是否有代码强制固定了transform.position.y值,或者在调用CharacterController.Move()/SimpleMove()时错误覆盖了重力相关计算。比如是否在Update/FixedUpdate中写了类似transform.position = new Vector3(transform.position.x, 1f, transform.position.z)的代码,锁死了y轴位置。验证场景物理设置
打开Edit > Project Settings > Physics,确认Gravity(重力)的y轴数值为负数(默认-9.81),若被设为0或正数,角色不会自然下落。检查模型缩放与碰撞体匹配
若模型存在非均匀缩放(x/y/z缩放不一致),Character Controller的碰撞判定可能异常。先将模型缩放重置为(1,1,1),再重新调整Character Controller的尺寸;或给模型添加Mesh Collider并勾选Convex(复杂模型适用)后测试。
内容的提问来源于stack exchange,提问作者Krumpich

