Version:

Shape 组件

Shape组件生成辅助几何体,这些几何体可用于定义区域光和形状渐变的形状,以及 AI、音频、雾、生成器、植被和 PhysX 的体积和区域。

可用的形状

Shape 组件形状用于
Axis Aligned Box Shape轴对齐的长方体几何体Terrain, Volume, Triggers
Box Shape箱体几何体Volumes, Triggers
Capsule Shape胶囊体(末端有半球体的圆柱体)几何体Volumes, Triggers
Compound Shape聚合由其他 Shape 组件定义的几何体Volumes, Triggers
Cylinder Shape圆柱体几何体Volumes, Triggers
Disk Shape圆盘几何Areas, Triggers
Polygon Prism ShapeN 边棱柱几何形状Volumes, Triggers
Quad Shape四平面几何Areas, Triggers
Sphere Shape球体几何体Volumes, Triggers
Spline直线和曲线Paths
Tube Shape管材几何形状Volumes, Triggers
注意:
White Box组件与其他 Shape 组件不共享相同的功能。 以下各节不适用于 White Box 组件。 有关更多信息,请参阅 White Box文档。

使用 Shape 组件

一个实体只能有一个 Shape 组件。

重要:
始终使用 Shape 的组件属性来缩放形状,例如 DimensionsHeightRadius 属性。请勿使用实体的 Transform (变换) 组件来缩放 Shape (形状) 组件。

包含 Shape 组件的实体应具有统一且标准化的缩放;也就是说,Transform 组件的 Scale 属性应为 X: 1.0Y: 1.0Z: 1.0。如果形状组件的缩放不均匀,则渲染和交集测试将使用 Transform 组件的 Scale 属性的最大向量,从而产生不需要的结果。

默认情况下,形状在 Open 3D Engine (O3DE) 编辑器中始终可见。您可以通过禁用形状组件中的 Visible 属性来隐藏未选定实体上的形状。

要在游戏模式下显示 Shape 组件以进行调试,请启用 Game View 属性。

每个 Shape 组件都提供了一个通用的 ShapeService,它公开了所有形状的通用功能。每个形状还提供更具体的服务,例如 BoxShapeServiceSphereShapeService

Shape组件 EBus 接口

所有 Shape 组件都提供对两个单独请求总线的访问。第一条总线是 ‘ShapeComponentRequestsBus’,它返回有关 Shape 组件的一般信息。第二个总线是 ‘ShapeNameComponentRequestsBus’,它返回特定形状的属性配置。有关ShapeNameComponentRequestsBus的信息,可以在每个 Shape 组件的参考页上找到。

所有形状共享一个名为 ‘ShapeComponentNotificationsBus’ 的通知总线。

您可以将以下函数与事件总线接口结合使用,以便与游戏中的其他组件进行通信。

ShapeComponentRequestsBus

方法名称说明参数返回值脚本化
DistanceFromPoint返回指定点与形状之间的最小距离。Point: Vector3 点来计算距离。Float - 从点到形状的距离。Yes
DistanceSquaredFromPoint返回指定点与形状之间的最小平方距离。Point: Vector3 点,用于计算平方距离。Float: 从点到形状的平方距离。Yes
GetEncompassingAabb返回包含整个形状的 AABB(轴对齐边界框)。None包住形状的AZ::AabbYes
GetShapeType返回组件的指定 Shape TypeNoneAZ::Crc32(<shape_type_name>): 例如。 AZ::Crc32("Sphere")Yes
IsPointInside检查指定的点是否在形状内部。Point: Vector3 指向进行检查。Boolean: 如果指定的点位于形状内部,则返回 ‘True’。如果点不在形状内部,则返回 ‘False’。Yes

ShapeComponentNotificationsBus

通知名称说明参数返回值脚本化
OnShapeChanged通知侦听器形状已更新。ShapeChangeReasons: 指示形状是由转换更改还是形状属性更改更新。VoidYes