碰撞配置¶
ModularBuildingSystem 使用碰撞通道完成:
- 建筑放置检测
- 建筑查询
- 结构支撑检测
建议为插件创建独立通道,避免与项目中的 Visibility、WorldStatic 等通道相互影响。
1. 创建碰撞通道¶
打开:
Object Channels¶
| 名称 | 默认响应 | 用途 |
|---|---|---|
MBS_Building |
Block |
标识插件生成的建筑。 |
MBS_WorldSupport |
Block |
标识地面和永久世界支撑对象。 |
Trace Channels¶
| 名称 | 默认响应 | 用途 |
|---|---|---|
MBS_Placement |
Ignore |
检测是否存在放置障碍。 |
MBS_Support |
Ignore |
检测建筑之间以及建筑与世界之间的支撑关系。 |
以上名称仅为推荐值,项目可以自行修改。
2. 创建 Ghost Profile¶
在 Collision 设置中创建:
推荐配置:
| 属性 | 推荐值 |
|---|---|
Collision Enabled |
Query Only |
Object Type |
WorldDynamic |
| 默认响应 | Ignore |
MBS_Building |
Overlap |
MBS_WorldSupport |
Overlap |
MBS_Placement |
Overlap |
MBS_Support |
Overlap |
MBS_Ghost 仅用于建筑预览。正式建筑应使用项目自己的 Collision Profile。
3. 配置建筑组件¶
插件生成的建筑组件应使用:
推荐响应:
| 通道 | 推荐响应 |
|---|---|
MBS_Placement |
Block |
MBS_Support |
Block |
Visibility |
Block |
Pawn |
根据项目需求设置 |
HISM 和 Actor 模式的主要建筑碰撞组件都应使用 MBS_Building。
Actor 中不参与建筑逻辑的装饰或特效组件,可以忽略:
4. 配置世界支撑¶
能够提供永久支撑的对象应使用:
并设置:
| 通道 | 推荐响应 |
|---|---|
MBS_Placement |
Block |
MBS_Support |
Block |
常见世界支撑对象包括:
- Landscape
- 地面 Static Mesh
- 固定平台
- 永久地图结构
- 承重岩石
玩家建造的地基、墙体和屋顶仍属于普通建筑,应使用 MBS_Building,不能使用 MBS_WorldSupport。
5. 配置插件设置¶
打开:
设置:
| 插件设置 | 推荐值 |
|---|---|
Default Ghost Collision Profile |
MBS_Ghost |
Placement Obstacle Trace Channel |
MBS_Placement |
Building Object Channel |
MBS_Building |
World Support Object Channel |
MBS_WorldSupport |
Support Query Trace Channel |
MBS_Support |
单个 Building Data Asset 可以覆盖默认的 Ghost Collision Profile。
6. 通道响应规则¶
需要阻止建筑放置的对象:
需要参与结构支撑检测的对象:
不影响建筑放置或支撑的对象:
例如草地、粒子特效和纯装饰组件通常可以忽略这两个通道。
Note
结构支撑通过碰撞关系判断,不依赖 Socket 吸附。
世界支撑 Tag、排除 Tag 和坍塌设置请参阅 结构支撑与坍塌。
常见问题¶
| 问题 | 检查内容 |
|---|---|
| Ghost 穿过已有建筑 | 建筑是否阻挡 MBS_Placement。 |
| Ghost 始终不可放置 | 是否有无关对象阻挡 MBS_Placement。 |
| 无法选择或查询建筑 | 建筑组件是否使用 MBS_Building。 |
| 建筑无法获得世界支撑 | 地面是否使用 MBS_WorldSupport 并阻挡 MBS_Support。 |
| 建筑之间无法传递支撑 | 建筑双方是否阻挡 MBS_Support。 |
| 装饰物错误参与支撑 | 装饰组件是否忽略 MBS_Support。 |
| Actor 部分组件错误参与检测 | 分别检查各个 Primitive Component。 |
配置检查¶
完成后确认:
- Ghost 使用
MBS_Ghost - 建筑组件使用
MBS_Building - 永久支撑对象使用
MBS_WorldSupport - 放置障碍物阻挡
MBS_Placement - 建筑和支撑对象阻挡
MBS_Support - 装饰和特效组件忽略不需要的查询
- 插件设置与项目碰撞通道一致