# 物理
# 索引
| 事件 | 描述 | |
|---|---|---|
| PhysXJointBreakServerEvent | 服务端 | 脚本创建的PhysX关节受力超过SetJointBreakForce设置的阈值并断裂后触发 |
| PhysXPostSimulateClientEvent | 客户端 | 客户端本地玩家当前维度完成 PhysX fetchResults 后触发,可通过 PhysX 组件读取当前帧最新线速度、角速度和四元数旋转 |
| PhysXPostSimulateServerEvent | 服务端 | 服务端每个参与物理模拟的维度完成 PhysX fetchResults 后触发,可读取当次模拟产生的最新 PhysX 线速度、角速度和旋转状态 |
| PhysXPreSimulateClientEvent | 客户端 | 客户端本地玩家当前维度执行 PhysX simulate 前触发,可用于轻量的视觉预测准备 |
| PhysXPreSimulateServerEvent | 服务端 | 服务端每个参与物理模拟的维度执行 PhysX simulate 前触发。在本事件中对当前维度刚体施加的力或扭矩会参与当次模拟 |
| PhysxTouchClientEvent | 客户端 | 给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Client才会触发 |
| PhysxTouchServerEvent | 服务端 | 给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Server才会触发 |
| PhysxTriggerClientEvent | 客户端 | 给自定义刚体添加的触发器,与其他碰撞体或原版实体进入/离开触发器时触发。需要在触发器创建时使用PxEventMask.Client才会触发 |
| PhysxTriggerServerEvent | 服务端 | 给自定义刚体添加的触发器,与其他碰撞体或原版实体发生进入触发器/离开触发器时触发。需要在触发器创建时使用PxEventMask.Server才会触发 |
# 物理
# PhysXJointBreakServerEvent
服务端
描述
脚本创建的PhysX关节受力超过SetJointBreakForce设置的阈值并断裂后触发
参数
参数名 数据类型说明 jointId int 已断裂关节的ID entityId0 str或None 关节第0端实体ID;该端连接世界时为None entityId1 str或None 关节第1端实体ID;该端连接世界时为None jointType int 关节类型:0固定关节,1距离关节,2球关节,3铰链关节,4滑动关节 breakForce float 断裂当次模拟中关节承受的线性约束力大小 breakTorque float 断裂当次模拟中关节承受的角约束力矩大小 dimensionId int 关节所在维度ID 返回值
无
备注
- 事件在PhysX模拟完成后同步触发。同一关节最多触发一次;事件触发后关节仍可通过IsJointBroken查询,并应使用DestroyJoint显式释放
# PhysXPostSimulateClientEvent
客户端
描述
客户端本地玩家当前维度完成 PhysX fetchResults 后触发,可通过 PhysX 组件读取当前帧最新线速度、角速度和四元数旋转
参数
参数名 数据类型说明 dimensionId int 当前完成物理模拟的维度id deltaTime float 本次物理模拟的固定时间步长,固定为0.05秒 返回值
无
备注
- 仅在本地玩家当前维度实际执行物理模拟时触发。事件为同步高频事件,回调中不要执行耗时IO,也不要销毁实体、维度或物理场景
- 该事件触发时 PhysX 刚体状态已更新,但普通实体的位置与旋转组件可能尚未完成本游戏刻回写。需要读取当帧结果时应使用 PhysX 组件的速度或四元数接口
- 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPostSimulateClientEvent。旧事件 PhysxTouchClientEvent 与 PhysxTriggerClientEvent 的命名不同
# PhysXPostSimulateServerEvent
服务端
描述
服务端每个参与物理模拟的维度完成 PhysX fetchResults 后触发,可读取当次模拟产生的最新 PhysX 线速度、角速度和旋转状态
参数
参数名 数据类型说明 dimensionId int 当前刚完成物理模拟的维度id deltaTime float 本次物理模拟的固定时间步长,固定为0.05秒 返回值
无
备注
- 该事件触发时PhysX刚体状态已更新,但普通实体位置与旋转组件可能尚未完成本游戏刻回写。需要读取当帧结果时应使用PhysX组件的速度或状态接口
- 该事件为同步高频事件,回调中应只执行轻量读取,不要执行耗时IO,也不要销毁实体、维度或物理场景
- 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPostSimulateServerEvent。旧事件 PhysxTouchServerEvent 与 PhysxTriggerServerEvent 的命名不同
# PhysXPreSimulateClientEvent
客户端
描述
客户端本地玩家当前维度执行 PhysX simulate 前触发,可用于轻量的视觉预测准备
参数
参数名 数据类型说明 dimensionId int 当前即将执行物理模拟的维度id deltaTime float 本次物理模拟的固定时间步长,固定为0.05秒 返回值
无
备注
- 仅在本地玩家当前维度实际执行物理模拟时触发。该事件为同步高频事件,回调中不要执行耗时IO,也不要销毁实体、维度或物理场景
- 当前客户端 PhysX 组件未提供 AddForce 或 AddTorque 接口,不能通过本事件向本地刚体施加力或扭矩;客户端可写接口的用途仅限本地视觉预测
- 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPreSimulateClientEvent。旧事件 PhysxTouchClientEvent 与 PhysxTriggerClientEvent 的命名不同
# PhysXPreSimulateServerEvent
服务端
描述
服务端每个参与物理模拟的维度执行 PhysX simulate 前触发。在本事件中对当前维度刚体施加的力或扭矩会参与当次模拟
参数
参数名 数据类型说明 dimensionId int 当前即将执行物理模拟的维度id deltaTime float 本次物理模拟的固定时间步长,固定为0.05秒 返回值
无
备注
- 该事件为同步高频事件,每个参与模拟的维度每游戏刻触发一次。回调中应只执行轻量的物理状态读写,不要执行耗时IO,也不要销毁实体、维度或物理场景
- 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPreSimulateServerEvent。旧事件 PhysxTouchServerEvent 与 PhysxTriggerServerEvent 的命名不同
# PhysxTouchClientEvent
客户端
描述
给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Client才会触发
参数
参数名 数据类型说明 touch list(dict) 开始接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,他与其他碰撞体/原版实体开始接触时,会出现在列表中 lost list(dict) 结束接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,他与其他碰撞体/原版实体结束接触时,会出现在列表中 返回值
无
备注
- touch列表每个元素的内容:lost列表每个元素的内容:
{ "entityId0": str, // 一个碰撞体所属实体的entityId "identifier0": str, // 一个碰撞体所属实体的identifier "shape0": str或None, // 一个碰撞体的userData "entityId1": str, // 另一个碰撞体所属实体的entityId "identifier1": str, // 另一个碰撞体所属实体的identifier "shape1": str或None, // 另一个碰撞体的userData "pos": (float,float,float), // 碰撞点的世界坐标。其中一个碰撞体在创建时使用了PxEventMask.Found_Detail才有该字段 "normal":(float,float,float) // 碰撞产生的力的方向,由碰撞体1指向碰撞体0。其中一个碰撞体在创建时使用了PxEventMask.Found_Detail才有该字段 }{ "entityId0": str, // 一个碰撞体所属实体的entityId "identifier0": str, // 一个碰撞体所属实体的identifier "shape0": str或None, // 一个碰撞体的userData "entityId1": str, // 另一个碰撞体所属实体的entityId "identifier1": str, // 另一个碰撞体所属实体的identifier "shape1": str或None // 另一个碰撞体的userData } - 列表中的碰撞对不分先后,每个碰撞对中的碰撞体0与碰撞体1也不分先后
- touch列表每个元素的内容:
# PhysxTouchServerEvent
服务端
描述
给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Server才会触发
参数
参数名 数据类型说明 touch list(dict) 开始接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,他与其他碰撞体/原版实体开始接触时,会出现在列表中 lost list(dict) 结束接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,他与其他碰撞体/原版实体结束接触时,会出现在列表中 返回值
无
备注
- touch列表每个元素的内容:lost列表每个元素的内容:
{ "entityId0": str, // 一个碰撞体所属实体的entityId "identifier0": str, // 一个碰撞体所属实体的identifier "shape0": str或None, // 一个碰撞体的userData "entityId1": str, // 另一个碰撞体所属实体的entityId "identifier1": str, // 另一个碰撞体所属实体的identifier "shape1": str或None, // 另一个碰撞体的userData "pos": (float,float,float), // 碰撞点的世界坐标。其中一个碰撞体在创建时使用了PxEventMask.Found_Detail才有该字段 "normal":(float,float,float) // 碰撞产生的力的方向,由碰撞体1指向碰撞体0。其中一个碰撞体在创建时使用了PxEventMask.Found_Detail才有该字段 }{ "entityId0": str, // 一个碰撞体所属实体的entityId "identifier0": str, // 一个碰撞体所属实体的identifier "shape0": str或None, // 一个碰撞体的userData "entityId1": str, // 另一个碰撞体所属实体的entityId "identifier1": str, // 另一个碰撞体所属实体的identifier "shape1": str或None // 另一个碰撞体的userData } - 列表中的碰撞对不分先后,每个碰撞对中的碰撞体0与碰撞体1也不分先后
- touch列表每个元素的内容:
# PhysxTriggerClientEvent
客户端
描述
给自定义刚体添加的触发器,与其他碰撞体或原版实体进入/离开触发器时触发。需要在触发器创建时使用PxEventMask.Client才会触发
参数
参数名 数据类型说明 found list(dict) 进入触发器的碰撞体对的信息。它与其他碰撞体/原版实体进入触发器时,会出现在列表中 lost list(dict) 离开触发器的碰撞体对的信息。它与其他碰撞体/原版实体离开触发器时,会出现在列表中 返回值
无
备注
- found列表每个元素的内容:lost列表每个元素的内容:
{ "entityId0": str, // 触发器所属实体的entityId "identifier0": str, // 触发器所属实体的identifier "shape0": dict|None, // 触发器的userData (NeEvent::Object) "entityId1": str, // 另一方实体的entityId "identifier1": str, // 另一方实体的identifier "shape1": dict|None // 另一方碰撞体的userData (NeEvent::Object) }{ "entityId0": str, // 触发器所属实体的entityId "identifier0": str, // 触发器所属实体的identifier "shape0": dict|None, // 触发器的userData "entityId1": str, // 另一方实体的entityId "identifier1": str, // 另一方实体的identifier "shape1": dict|None // 另一方碰撞体的userData }
- found列表每个元素的内容:
# PhysxTriggerServerEvent
服务端
描述
给自定义刚体添加的触发器,与其他碰撞体或原版实体发生进入触发器/离开触发器时触发。需要在触发器创建时使用PxEventMask.Server才会触发
参数
参数名 数据类型说明 found list(dict) 进入触发器的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,它与其他碰撞体/原版实体进入触发器时,会出现在列表中 lost list(dict) 离开触发器的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,它与其他碰撞体/原版实体离开触发器时,会出现在列表中 返回值
无
备注
- found列表每个元素的内容:lost列表每个元素的内容:
{ "entityId0": str, // 触发器所属实体的entityId "identifier0": str, // 触发器所属实体的identifier "shape0": str或None, // 触发器的userData (NeEvent::Object) "entityId1": str, // 进入触发器的碰撞体所属实体的entityId "identifier1": str, // 进入触发器的碰撞体所属实体的identifier "shape1": str或None // 进入触发器的碰撞体的userData (NeEvent::Object) }{ "entityId0": str, // 触发器所属实体的entityId "identifier0": str, // 触发器所属实体的identifier "shape0": str或None, // 触发器的userData (NeEvent::Object) "entityId1": str, // 离开触发器的碰撞体所属实体的entityId "identifier1": str, // 离开触发器的碰撞体所属实体的identifier "shape1": str或None // 离开触发器的碰撞体的userData (NeEvent::Object) } - 列表中的碰撞对不分先后,每个碰撞对中的碰撞体0与碰撞体1的具体角色取决于底层触发逻辑。
- found列表每个元素的内容: