跳转至

结构支撑与坍塌

结构支撑系统用于判断建筑是否存在通向永久世界支撑对象的有效路径。

屋顶
→ 墙体
→ 地基
→ Landscape

建筑之间通过碰撞接触传递支撑,Landscape、地面和固定平台等世界对象作为最终支撑来源。

Note

结构支撑不依赖 Socket 吸附。

建筑是否使用吸附放置,不影响最终支撑判断。

支撑类型

类型 说明
建筑支撑 地基、墙体、柱子等建筑,可以向相邻建筑传递支撑。
世界支撑 Landscape、地面和固定平台等永久对象,是支撑路径的最终来源。

通常使用:

建筑                  → Building Object Channel
永久世界支撑          → World Support Object Channel
支撑接触查询          → Support Query Trace Channel

碰撞配置请参阅 碰撞配置

支撑判断

建筑之间不需要通过 Socket 连接。只要碰撞接触和通道配置有效,就可以建立支撑关系。

以下方式都可以参与支撑检测:

  • Socket 吸附放置
  • 自由放置
  • 表面放置
  • 移动已有建筑
  • 项目自定义放置

Warning

视觉上接近不代表已经建立支撑。 建筑必须满足碰撞接触范围和支撑查询规则。

相关设置

打开:

Edit → Project Settings → Building System
设置项 默认值 说明
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 启用 是否处理失去支撑的建筑。

其他项目设置请参阅 插件设置

世界支撑识别

仅使用碰撞通道

Require World Support Tag Or Interface = false

满足 World Support Object Channel 的对象即可作为永久世界支撑。

适合已经使用专用世界支撑通道的项目。

使用 Tag 或接口

Require World Support Tag Or Interface = true

对象除满足碰撞要求外,还需要满足以下任一条件:

  • Actor 具有 World Support Tag
  • 命中的 Component 具有 World Support Tag
  • Actor 实现世界支撑接口并允许支撑

适合多个对象共用 WorldStatic,但只有部分对象允许承重的项目。

World Support Tag

默认值:

Building_SupportAnchor

可以添加到:

Actor → Tags

或:

Component → Tags

对于包含多个组件的 Actor,建议将 Tag 添加到真正承重的 Component。

World Support Excluded Tag

默认值:

Building_NoSupport

该 Tag 用于排除不能承重的对象或组件,例如:

  • 装饰物
  • 草地
  • 小型道具
  • 辅助碰撞组件
  • 装饰 HISM Component

排除 Tag 的优先级最高。对象即使同时拥有支撑 Tag 或实现支撑接口,也不能提供支撑。

世界支撑接口

需要根据运行时状态决定是否承重的对象,可以实现 Building World Support Provider 接口。

适用于:

  • 可启用或关闭的平台
  • 损坏后失效的桥梁
  • 锁定后才允许承重的移动平台
  • 其他动态支撑对象

在:

Can Provide Building World Support

中返回当前是否允许提供支撑。

Tag 适合固定配置,接口适合动态判断。

判断优先级

检查排除 Tag
→ 检查碰撞通道
→ 检查是否要求 Tag 或接口
→ 检查支撑 Tag
→ 检查支撑接口
→ 确认世界支撑

World Support Excluded Tag 始终具有最高优先级。

World Support Check Distance

该值用于容忍建筑与世界支撑之间的微小间隙。

默认值:

5 cm

数值过小可能无法识别接地建筑,数值过大可能将悬空建筑误判为获得支撑。通常建议保留默认值。

自动坍塌

启用:

Enable Collapse = true

后,系统会在建筑放置、移动或移除后检查受影响结构。

例如:

屋顶
→ 墙体
→ 地基
→ Landscape

移除地基后:

屋顶
→ 墙体
→ 无世界支撑

失去有效支撑路径的建筑会进入坍塌处理。

联网游戏中的最终检查和建筑移除由服务器执行。

关闭 Enable Collapse 后,插件不会自动处理失去支撑的建筑,但建造、移动、移除和吸附功能仍然可用。

常见配置

Landscape

World Support Object Channel = WorldStatic
Require World Support Tag Or Interface = false

同时确保 Landscape 响应 Support Query Trace Channel

固定平台

严格模式下,在平台 Actor 或承重 Component 添加:

Building_SupportAnchor

不承重对象

在 Actor 或 Component 添加:

Building_NoSupport

多组件 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 和建筑碰撞连接。