SuperAPI AI 工具集

bevy-physics

编程与开发

查看项目

更新于 10-15 17:33

技能介绍

本技能面向 Bevy 0.19 的物理集成,核心是使用 bevy_rapier2d/bevy_rapier3d 0.36 添加 2D/3D 刚体、碰撞体、传感器、关节或角色移动,读取碰撞消息并执行射线、形状、点与重叠查询。可用于判断选择 bevy_rapier 还是 avian2d/avian3d 0.7,也可在物理步之外组织输入与玩法系统以避免变换抖动,并配置无头物理、插值、CCD、碰撞组与测试。

Bevy 核心不包含物理引擎。同一批模拟实体不要同时安装两个引擎。

典型固定步长 3D 模式:在依赖中写 bevy = "0.19" 与 bevy_rapier3d = "0.36",用 Time::<Fixed>::from_hz 与 TimestepMode::Fixed 设定固定步长,添加 RapierPhysicsPlugin::<NoUserData>::default().in_fixed_schedule(),并用 configure_sets 把驱动系统放在 PhysicsSet::SyncBackend 之前、响应系统放在 PhysicsSet::Writeback 之后。插件默认运行在 PostUpdate 且使用 TimestepMode::Variable;若需要与帧耦合的模拟,应保留默认调度并在同一调度中排序系统。

注意事项:Velocity 字段为 linear 与 angular(不是 linvel/angvel);CollisionEvent 与 ContactForceEvent 是消息,至少一个碰撞体需启用对应 ActiveEvents 标志;ReadRapierContext 是 SystemParam,需调用 .single() 并处理 Result,RapierContext 不是全局资源且支持多世界;动态刚体拥有其模拟位姿,反复写 Transform 相当于瞬移并常导致抖动,应改用力、冲量或速度;运动学刚体沿指定轨迹移动,不会自行避障,可使用场景查询或 KinematicCharacterController;Rapier 默认 Cargo 特性会引入 Bevy 资产/渲染辅助,无头或外部渲染器构建应禁用默认特性并启用正确的 dim2/dim3 特性;RapierDebugRenderPlugin 仅用于诊断可视化,不是渲染器或发布必需项。

适用场景包括角色控制、碰撞响应、查询检测与确定性测试;局限在于需自行管理调度与位姿权威,且本资料未提供收费、价格或平台信息。