碰撞体
初级 设计师
Warning
Bullet Physics is being phased out. We no longer plan to support or expand its features as our focus shifts to Bepu Physics. We recommend transitioning to Bepu Physics for access to the latest updates and ongoing improvements.
要在项目中使用物理,请向实体添加碰撞体(Collider) 组件。
碰撞体定义物理对象的形状和规则。有三种类型:
你还可以:
碰撞体如何交互
碰撞体按照下表进行交互。
| 运动学对象 | 运动学触发器 | 刚体碰撞体 | 刚体触发器 | 静态碰撞体 | 静态触发器 | |
|---|---|---|---|---|---|---|
| 运动学对象 | 碰撞 | 碰撞 | 碰撞和动态响应 | 碰撞 | 碰撞 | 碰撞 |
| 运动学触发器 | 碰撞 | 碰撞 | 碰撞 | 碰撞 | 碰撞 | 碰撞 |
| 刚体碰撞体 | 碰撞和动态响应 | 碰撞 | 碰撞和动态响应 | 碰撞 | 碰撞和动态响应 | 碰撞 |
| 刚体触发器 | 碰撞 | 碰撞 | 碰撞 | 碰撞 | 碰撞 | 碰撞 |
| 静态碰撞体 | 碰撞 | 碰撞 | 碰撞和动态响应 | 碰撞 | 无 | 无 |
| 静态触发器 | 碰撞 | 碰撞 | 碰撞 | 碰撞 | 无 | 无 |
"碰撞"仅指碰撞信息和事件。这意味着碰撞在代码中被检测到,但对象之间不会互相碰撞(没有动态响应)。
"动态响应"意味着既有碰撞信息和事件,又有动态响应(即碰撞体互相碰撞而不是相互穿过)。
例如,刚体碰撞体与静态碰撞体发生动态碰撞(即撞上它们)。但是,没有任何对象与触发器发生动态碰撞;碰撞在代码中被检测到,但对象只是直接穿过。
在 Scene Editor 中显示碰撞体
默认情况下,碰撞体在 Scene Editor 中是不可见的。要显示它们:
在 Game Studio 工具栏右上角,点击 Display gizmo options 图标。

选择 Physics。

Scene Editor 会显示碰撞体形状。

在运行时显示碰撞体
你可以让碰撞体在运行时可见,这对于调试物理问题很有用。为此,请使用:
this.GetSimulation().ColliderShapesRendering = true;
Note
无限平面的碰撞体形状始终不可见。
键盘快捷键
要使用键盘快捷键在运行时显示或隐藏碰撞体形状,请使用 Debug physics shapes 脚本。
在 Asset View 中,点击 Add asset。
选择 Scripts > Debug physics shapes。

在 Game Studio 工具栏中,点击 Reload assemblies and update scripts。

将 Debug physics shapes 脚本作为组件添加到场景中的某个实体上。哪个实体都可以。

该脚本将碰撞体形状的可见性绑定到 Left Shift + Left Ctrl + P,这样你就可以在运行时开关它。你可以编辑脚本以绑定不同的按键组合。