IN THIS ARTICLE
Non-uniform Scale 组件
Non-uniform Scale 组件允许实体沿每个局部轴缩放不同的量。 可以通过单击 Transform 组件上的 Add non-uniform scale 按钮来添加它。
Non-uniform Scale 组件与某些其他组件不兼容,这些组件如果不从根本上改变其特性,就无法进行非均匀缩放。例如,它与 Sphere Shape 组件不兼容,因为不均匀缩放球体会产生椭球体并破坏球体的特征对称性。
为避免倾斜问题,非均匀缩放仅应用于当前实体,不会传播到其子实体。
兼容的组件
以下是与Non-uniform Scale兼容的组件:
- Box Shape
- Polygon Prism Shape
- Quad Shape
- PhysX Primitive Collider - 请注意,如果基元碰撞体的缩放不均匀,则会将其替换为凸近似值,这可能会略微降低性能。可以使用 PhysX Primitive Collider组件上的 Subdivision level 设置来调整凸面近似的细节级别。
- PhysX Mesh Collider
- PhysX Shape Collider
- PhysX Static Rigid Body
- PhysX Dynamic Rigid Body
- PhysX Force Region
- Decal
- Mesh
不兼容的组件
以下组件与 Non-uniform Scale 组件不兼容*,因为非均匀缩放会破坏组件所做的基本假设,或者因为它们需要大量工作才能正确支持非均匀缩放:
- Capsule Shape
- Compound Shape
- Cylinder Shape
- Disk Shape
- Sphere Shape
- Tube Shape
- Cloth
- PhysX Ball Joint
- PhysX Fixed Joint
- PhysX Hinge Joint
- PhysX Prismatic Joint
- PhysX Ragdoll
- PhysX Character Controller
- PhysX Character Gameplay
- Attachment
- Actor
- Simple Motion
- Fly Camera Input
- HDRi Skybox
- Physical Sky
以下组件目前 不兼容 因为它们尚不受支持,但没有导致兼容性难以添加的根本原因:
- Sequence
- Spline
- White Box
- White Box Collider
- Diffuse Probe Grid
- Reflection Probe
EBus 请求总线接口
NonUniformScaleRequestBus 是用于 Non-uniform Scale 组件的请求总线。
有关使用事件总线 (EBus) 接口的更多信息,请参阅 使用事件总线(EBus)系统。
将以下请求函数与 EBus 接口结合使用,以与其他组件进行通信。
GetScale
返回实体的非均匀缩放。
参数 None
返回值 实体的非均匀缩放值。 Type: Vector3
SetScale
设置实体的非均匀缩放。
参数 新的非均匀缩放值。 Type: Vector3
返回值 None
RegisterScaleChangedEvent
为更改实体的非均匀缩放时引发的 AZ::Event 注册处理程序。 参数 非均匀缩放更改事件的处理程序。 Type: NonUniformScaleChangedEvent::Handler
返回值 None
编辑器自动化
可以使用以下内容访问编辑器 Non-uniform Scale 组件的组件类型 ID 以进行编辑器自动化。
azlmbr.editor.EditorNonUniformScaleComponentTypeId
例如,可以添加 Non-uniform Scale 组件,并按如下方式修改缩放。
nonUniformScaleComponentId = azlmbr.editor.EditorNonUniformScaleComponentTypeId
azlmbr.editor.EditorComponentAPIBus(azlmbr.bus.Broadcast,'AddComponentsOfType', entityId, [nonUniformScaleComponentId])
azlmbr.entity.NonUniformScaleRequestBus(azlmbr.bus.Event, 'SetScale', entityId, azlmbr.math.Vector3(1.0, 2.0, 3.0))