跳转到内容

uBot Physics Binding

C++
UUBotPhysicsBindingComponent
父类
UActorComponent
类型
组件 · 可在 Components 面板添加 · 可作为蓝图父类
模块
UBotPhysics · UBotPhysics 0.1.0
头文件
Source/UBotPhysics/Public/UBotPhysicsBindingComponent.h

把本 Actor 自己的组件交给物理后端:绑定期间由后端而不是 Chaos 模拟它们,后端按 uBot 仿真时钟步进,每帧把位姿写回组件。绑定要么全部成功要么全部不交,一个组件最多属于一个绑定,且不能交出别的 Actor 的组件。为已交出的组件实现 IUBotBodyStateSource,传感器可以读到它们的真实状态。被交出的组件在 Chaos 里是运动学体(关闭物理模拟,碰撞设置不变):能推动 Chaos 物体,但不会被推动。解绑时恢复原来的模拟状态;后端被注销时物体同样回到 Chaos,状态变为 BackendMissing,后端重新注册后再次 Bind Physics Bodies 即可。

函数 · UUBotPhysicsBindingComponent.Bind

把所有物体交给后端,要么全部成功要么全部不交。绑定成功返回 true,已经绑定时也返回 true。失败时不会绑定任何物体,原因见 Get Physics Binding Status 和 Get Physics Binding Error;失败会作为运行时问题报告,直到下一次成功的绑定、解绑或结束播放才清除。

引脚方向类型
Return Value输出Boolean

纯函数 · UUBotPhysicsBindingComponent.GetBoundComponents

返回已交给后端的组件;未绑定时为空。

引脚方向类型
Return Value输出Primitive Component对象引用数组

纯函数 · UUBotPhysicsBindingComponent.GetBindingError

最近一次 Bind Physics Bodies 失败的原因;其他情况为空。

引脚方向类型
Return Value输出Text

纯函数 · UUBotPhysicsBindingComponent.GetBindingStatus

返回绑定当前的状态。

引脚方向类型
Return Value输出EUBot Physics Binding Status枚举

函数 · UUBotPhysicsBindingComponent.Unbind

把物体还给 Chaos:原来开着物理模拟的组件重新开启,并带上后端最后一步的速度。同时清除失败的绑定状态。

未特别标注的属性:蓝图里只读,Details 面板里可以编辑。

属性类型默认值说明
BackendBackend · PhysicsNameNone模拟这些物体的后端名,即在 UBotPhysics.Backend 扩展点上注册的名字。调用 Bind Physics Bodies 时读取。
Bind on Begin PlaybBindOnBeginPlay · PhysicsBooleantrue开始播放时自动绑定,默认开启。关闭后自己调用 Bind Physics Bodies,例如等后端的模型准备好之后。
BodiesBodies · PhysicsUBot Physics Body Binding结构体数组—要交出的物体,每个都必须是本 Actor 的组件。留空时交出所属 Actor 的根组件,它必须是 Primitive 组件。