结构支撑与坍塌¶
结构支撑系统用于判断建筑是否存在通向永久世界支撑对象的有效路径。
建筑之间通过碰撞接触传递支撑,Landscape、地面和固定平台等世界对象作为最终支撑来源。
支撑类型¶
| 类型 | 说明 |
|---|---|
| 建筑支撑 | 地基、墙体、柱子等建筑,可以向相邻建筑传递支撑。 |
| 世界支撑 | Landscape、地面和固定平台等永久对象,是支撑路径的最终来源。 |
通常使用:
建筑 → Building Object Channel
永久世界支撑 → World Support Object Channel
支撑接触查询 → Support Query Trace Channel
碰撞配置请参阅 碰撞配置。
支撑判断¶
建筑之间不需要通过 Socket 连接。只要碰撞接触和通道配置有效,就可以建立支撑关系。
以下方式都可以参与支撑检测:
- Socket 吸附放置
- 自由放置
- 表面放置
- 移动已有建筑
- 项目自定义放置
Warning
视觉上接近不代表已经建立支撑。 建筑必须满足碰撞接触范围和支撑查询规则。
相关设置¶
打开:
| 设置项 | 默认值 | 说明 |
|---|---|---|
Building Object Channel |
WorldDynamic |
插件建筑使用的 Object Channel。 |
World Support Object Channel |
WorldStatic |
永久世界支撑使用的 Object Channel。 |
Support Query Trace Channel |
Visibility |
查询结构支撑接触。 |
Require World Support Tag Or Interface |
关闭 | 是否额外要求支撑 Tag 或接口。 |
World Support Tag |
Building_SupportAnchor |
显式允许对象提供世界支撑。 |
World Support Excluded Tag |
Building_NoSupport |
显式禁止对象提供世界支撑。 |
World Support Check Distance |
5 cm |
世界支撑接触检测距离。 |
Enable Collapse |
启用 | 是否处理失去支撑的建筑。 |
其他项目设置请参阅 插件设置。
世界支撑识别¶
仅使用碰撞通道¶
满足 World Support Object Channel 的对象即可作为永久世界支撑。
适合已经使用专用世界支撑通道的项目。
使用 Tag 或接口¶
对象除满足碰撞要求外,还需要满足以下任一条件:
- Actor 具有
World Support Tag - 命中的 Component 具有
World Support Tag - Actor 实现世界支撑接口并允许支撑
适合多个对象共用 WorldStatic,但只有部分对象允许承重的项目。
World Support Tag¶
默认值:
可以添加到:
或:
对于包含多个组件的 Actor,建议将 Tag 添加到真正承重的 Component。
World Support Excluded Tag¶
默认值:
该 Tag 用于排除不能承重的对象或组件,例如:
- 装饰物
- 草地
- 小型道具
- 辅助碰撞组件
- 装饰 HISM Component
排除 Tag 的优先级最高。对象即使同时拥有支撑 Tag 或实现支撑接口,也不能提供支撑。
世界支撑接口¶
需要根据运行时状态决定是否承重的对象,可以实现 Building World Support Provider 接口。
适用于:
- 可启用或关闭的平台
- 损坏后失效的桥梁
- 锁定后才允许承重的移动平台
- 其他动态支撑对象
在:
中返回当前是否允许提供支撑。
Tag 适合固定配置,接口适合动态判断。
判断优先级¶
World Support Excluded Tag 始终具有最高优先级。
World Support Check Distance¶
该值用于容忍建筑与世界支撑之间的微小间隙。
默认值:
数值过小可能无法识别接地建筑,数值过大可能将悬空建筑误判为获得支撑。通常建议保留默认值。
自动坍塌¶
启用:
后,系统会在建筑放置、移动或移除后检查受影响结构。
例如:
移除地基后:
失去有效支撑路径的建筑会进入坍塌处理。
联网游戏中的最终检查和建筑移除由服务器执行。
关闭 Enable Collapse 后,插件不会自动处理失去支撑的建筑,但建造、移动、移除和吸附功能仍然可用。
常见配置¶
Landscape¶
同时确保 Landscape 响应 Support Query Trace Channel。
固定平台¶
严格模式下,在平台 Actor 或承重 Component 添加:
不承重对象¶
在 Actor 或 Component 添加:
多组件 Actor¶
| 组件 | Tag |
|---|---|
| 地面组件 | Building_SupportAnchor |
| 栏杆组件 | Building_NoSupport |
| 装饰 HISM | Building_NoSupport |
常见问题¶
| 问题 | 检查内容 |
|---|---|
| 建筑放置后立即坍塌 | 检查世界支撑通道、支撑 Trace 和检测距离。 |
| Landscape 无法提供支撑 | 检查 Object Type 和 Trace Response。 |
| 装饰物错误提供支撑 | 添加 World Support Excluded Tag。 |
| 严格模式下无法获得支撑 | 检查支撑 Tag 或接口。 |
| Actor 中错误组件参与支撑 | 将 Tag 配置到具体 Component。 |
| 移除地基后没有坍塌 | 检查 Enable Collapse 和建筑碰撞连接。 |