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

Bullet物理引擎角色控制器穿透静态与动态物体的问题求助

Bullet物理引擎角色控制器穿透静态与动态物体的问题求助

大家好,我在基于Ammo.js使用Bullet物理引擎实现角色控制器的时候,碰到了一个特别矛盾的问题,折腾好几天没搞定,来请教下各位大佬:

我的核心问题是:角色控制器不会站在静态物体的表面,而是会直接陷进去,这带来了很多不符合预期的表现,但诡异的是,角色上台阶的功能却是正常的!

我还发现一个奇怪的现象:如果我把角色控制器初始化时的upAxis参数设为-1,角色就能正常贴合在物体表面上了,但这时候上台阶的功能就完全失效了...

下面是我相关的代码片段,方便大家排查问题:

角色控制器(Character Controller)初始化代码

// 1. 创建Ghost Object作为角色的碰撞体容器
let body = new AMMO.btPairCachingGhostObject();
body.setWorldTransform(transform);
body.setCollisionShape(colShape);
// 禁用休眠状态
body.setActivationState(4); // DISABLE_DEACTIVATION == 4
body.activate(true);
this.world.getBroadphase().getOverlappingPairCache().setInternalGhostPairCallback(new AMMO.btGhostPairCallback());
// 标记为角色对象
body.setCollisionFlags(body.getCollisionFlags() | btCollisionObjectCollisionFlags.CF_CHARACTER_OBJECT); // 16
this.world.addCollisionObject(body);

// 2. 创建角色的圆柱碰撞形状
let collider = new AMMO.btCylinderShape(
  new AMMO.btVector3(metadata.params.radius, metadata.params.halfHeight, metadata.params.radius)
);

// 3. 创建Kinematic角色控制器
let characterController = new AMMO.btKinematicCharacterController(
  body,
  collider,
  0.35, // stepHeight 台阶高度
  1 // upAxis 原参数为1,改为-1时表面贴合正常但台阶功能失效
);
characterController.setUseGhostSweepTest(true);
characterController.setGravity(9.8 * 3); // 重力设为默认的3倍
characterController.setMaxSlope(Math.PI / 3); // 最大爬坡角度设为60度(默认45度)
this.world.addAction(characterController);

地面静态物体初始化代码

let mass = 0; // 质量为0标记为静态物体
let motionState = new AMMO.btDefaultMotionState(transform);
let rbInfo = new AMMO.btRigidBodyConstructionInfo(mass, motionState, colShape, localInertia);
body = new AMMO.btRigidBody(rbInfo);
this.world.addRigidBody(body);
// 设置为静态物体碰撞标记
body.setCollisionFlags(body.getCollisionFlags() | btCollisionObjectCollisionFlags.CF_STATIC_OBJECT); // 1

还有几个细节可能对排查问题有帮助:

  • 穿透现象只发生在角色控制器的下半部分,从侧面观察的话,角色和物体的侧面碰撞是正常贴合的
  • 场景中的动态物体也存在同样问题:从侧面推它们时,碰撞交互完全正常,但站在它们上面就会出现穿透

如果我的问题描述有不清楚的地方,或者需要补充其他调试信息,欢迎大家随时指出,我会马上补充说明!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 12:55:27