Skip to content

PhysicsUnit

纯物理组件。需先通过 PrefabService:CreatePrefab("PhysicsUnit") 创建预设,再通过 World:CreateAsset(预设ID) 创建单位,字段属性可直接读写。

概览

PhysicsUnit 是场景中参与物理模拟的单位类型,具备完整的物理属性控制能力,包括碰撞组、质量、重力、阻尼以及自定义物理材质等。通过施加力、冲量或力矩可以驱动其运动,同时支持碰撞事件监听,适合构建需要真实物理交互的物体。

继承自 SpaceUnit;需通过预设资产与 World:CreateAsset(...) 创建,不能使用 PhysicsUnit.New()

属性

名称类型默认值说明
ModelBindParentBool-启用后,当父节点为 WorldUnit、RenderUnit、TriggerUnit、PhysicsUnit 等支持父子带动的场景单位时,当前单位将整体跟随父节点运动,保持与父节点的相对位置和旋转。运行时可通过脚本设置 .ModelBindParent = true/false 动态切换该行为。
PhysicsMeshIdString-物理资源ID
BodyTypeInt-物体的物理运动类型:静态(Static)不可修改,运动学(Kinematic)仅通过脚本逻辑驱动,动态(Dynamic)参与完整物理模拟
PhysicsActiveBool-是否启用物理模拟,关闭后物体不参与碰撞和物理计算
CollisionGroupString-物体所属的碰撞组名称,用于按碰撞组规则过滤碰撞关系
CanCollideBool-是否参与物理碰撞,关闭后物体将穿透其他物体
CanTouchBool-其他物体碰到此物体时,是否触发此物体的碰撞事件
CanTriggerBool-此物体碰到其他物体时,是否触发对方的碰撞事件
MassFloat-物体的质量,仅对动态(Dynamic)物体生效
MasslessBool-启用后此物体的质量不计入父级装配体的总质量
CustomPhysicalPropertiesPhysicalProperties-自定义物理材质参数(摩擦力、弹性、密度等),为空时使用默认值
CenterOfMassVector3-物体在局部空间中的质心偏移位置
GravityEnabledBool-是否受重力影响,仅对动态(Dynamic)物体生效
UseIndividualGravityBool-启用后使用自定义的重力方向和大小替代全局重力
IndividualGravityValueVector3-自定义重力的方向和大小,默认为 (0, -9.8, 0)
LinearDampingFloat-线速度的阻尼系数,值越大减速越快,仅对动态(Dynamic)物体生效
AngularDampingFloat-角速度的阻尼系数,值越大旋转减速越快,仅对动态(Dynamic)物体生效
ClimbableBool-玩家角色是否可以攀爬此物体,仅对静态(Static)物体生效
CanQueryBool-是否参与空间射线检测(Raycast、Spherecast 等),关闭后射线将穿透此物体