跳转至

碰撞配置

ModularBuildingSystem 使用碰撞通道完成:

  • 建筑放置检测
  • 建筑查询
  • 结构支撑检测

建议为插件创建独立通道,避免与项目中的 VisibilityWorldStatic 等通道相互影响。

1. 创建碰撞通道

打开:

Edit → Project Settings → Engine → Collision

Object Channels

名称 默认响应 用途
MBS_Building Block 标识插件生成的建筑。
MBS_WorldSupport Block 标识地面和永久世界支撑对象。

Trace Channels

名称 默认响应 用途
MBS_Placement Ignore 检测是否存在放置障碍。
MBS_Support Ignore 检测建筑之间以及建筑与世界之间的支撑关系。

以上名称仅为推荐值,项目可以自行修改。

2. 创建 Ghost Profile

在 Collision 设置中创建:

MBS_Ghost

推荐配置:

属性 推荐值
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. 配置建筑组件

插件生成的建筑组件应使用:

Object Type = MBS_Building

推荐响应:

通道 推荐响应
MBS_Placement Block
MBS_Support Block
Visibility Block
Pawn 根据项目需求设置

HISMActor 模式的主要建筑碰撞组件都应使用 MBS_Building

Actor 中不参与建筑逻辑的装饰或特效组件,可以忽略:

MBS_Placement
MBS_Support

4. 配置世界支撑

能够提供永久支撑的对象应使用:

Object Type = MBS_WorldSupport

并设置:

通道 推荐响应
MBS_Placement Block
MBS_Support Block

常见世界支撑对象包括:

  • Landscape
  • 地面 Static Mesh
  • 固定平台
  • 永久地图结构
  • 承重岩石

玩家建造的地基、墙体和屋顶仍属于普通建筑,应使用 MBS_Building,不能使用 MBS_WorldSupport

5. 配置插件设置

打开:

Edit → Project Settings → Building System

设置:

插件设置 推荐值
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. 通道响应规则

需要阻止建筑放置的对象:

MBS_Placement = Block

需要参与结构支撑检测的对象:

MBS_Support = Block

不影响建筑放置或支撑的对象:

MBS_Placement = Ignore
MBS_Support = Ignore

例如草地、粒子特效和纯装饰组件通常可以忽略这两个通道。

Note

结构支撑通过碰撞关系判断,不依赖 Socket 吸附。

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
  • 装饰和特效组件忽略不需要的查询
  • 插件设置与项目碰撞通道一致