Skip to content

物理 ​

索引 ​

事件
描述
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设置的阈值并断裂后触发

  • 参数

    参数名
    数据类型
    说明
    jointIdint已断裂关节的ID
    entityId0str或None关节第0端实体ID;该端连接世界时为None
    entityId1str或None关节第1端实体ID;该端连接世界时为None
    jointTypeint关节类型:0固定关节,1距离关节,2球关节,3铰链关节,4滑动关节
    breakForcefloat断裂当次模拟中关节承受的线性约束力大小
    breakTorquefloat断裂当次模拟中关节承受的角约束力矩大小
    dimensionIdint关节所在维度ID
  • 返回值

    无

  • 备注

    • 事件在PhysX模拟完成后同步触发。同一关节最多触发一次;事件触发后关节仍可通过IsJointBroken查询,并应使用DestroyJoint显式释放

PhysXPostSimulateClientEvent ​

客户端

  • 描述

    客户端本地玩家当前维度完成 PhysX fetchResults 后触发,可通过 PhysX 组件读取当前帧最新线速度、角速度和四元数旋转

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint当前完成物理模拟的维度id
    deltaTimefloat本次物理模拟的固定时间步长,固定为0.05秒
  • 返回值

    无

  • 备注

    • 仅在本地玩家当前维度实际执行物理模拟时触发。事件为同步高频事件,回调中不要执行耗时IO,也不要销毁实体、维度或物理场景
    • 该事件触发时 PhysX 刚体状态已更新,但普通实体的位置与旋转组件可能尚未完成本游戏刻回写。需要读取当帧结果时应使用 PhysX 组件的速度或四元数接口
    • 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPostSimulateClientEvent。旧事件 PhysxTouchClientEvent 与 PhysxTriggerClientEvent 的命名不同

PhysXPostSimulateServerEvent ​

服务端

  • 描述

    服务端每个参与物理模拟的维度完成 PhysX fetchResults 后触发,可读取当次模拟产生的最新 PhysX 线速度、角速度和旋转状态

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint当前刚完成物理模拟的维度id
    deltaTimefloat本次物理模拟的固定时间步长,固定为0.05秒
  • 返回值

    无

  • 备注

    • 该事件触发时PhysX刚体状态已更新,但普通实体位置与旋转组件可能尚未完成本游戏刻回写。需要读取当帧结果时应使用PhysX组件的速度或状态接口
    • 该事件为同步高频事件,回调中应只执行轻量读取,不要执行耗时IO,也不要销毁实体、维度或物理场景
    • 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPostSimulateServerEvent。旧事件 PhysxTouchServerEvent 与 PhysxTriggerServerEvent 的命名不同

PhysXPreSimulateClientEvent ​

客户端

  • 描述

    客户端本地玩家当前维度执行 PhysX simulate 前触发,可用于轻量的视觉预测准备

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint当前即将执行物理模拟的维度id
    deltaTimefloat本次物理模拟的固定时间步长,固定为0.05秒
  • 返回值

    无

  • 备注

    • 仅在本地玩家当前维度实际执行物理模拟时触发。该事件为同步高频事件,回调中不要执行耗时IO,也不要销毁实体、维度或物理场景
    • 当前客户端 PhysX 组件未提供 AddForce 或 AddTorque 接口,不能通过本事件向本地刚体施加力或扭矩;客户端可写接口的用途仅限本地视觉预测
    • 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPreSimulateClientEvent。旧事件 PhysxTouchClientEvent 与 PhysxTriggerClientEvent 的命名不同

PhysXPreSimulateServerEvent ​

服务端

  • 描述

    服务端每个参与物理模拟的维度执行 PhysX simulate 前触发。在本事件中对当前维度刚体施加的力或扭矩会参与当次模拟

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint当前即将执行物理模拟的维度id
    deltaTimefloat本次物理模拟的固定时间步长,固定为0.05秒
  • 返回值

    无

  • 备注

    • 该事件为同步高频事件,每个参与模拟的维度每游戏刻触发一次。回调中应只执行轻量的物理状态读写,不要执行耗时IO,也不要销毁实体、维度或物理场景
    • 事件名大小写敏感,名称中的 PhysX 必须使用大写 X;不要写成 PhysxPreSimulateServerEvent。旧事件 PhysxTouchServerEvent 与 PhysxTriggerServerEvent 的命名不同

PhysxTouchClientEvent ​

客户端

  • 描述

    给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Client才会触发

  • 参数

    参数名
    数据类型
    说明
    touchlist(dict)开始接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,他与其他碰撞体/原版实体开始接触时,会出现在列表中
    lostlist(dict)结束接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,他与其他碰撞体/原版实体结束接触时,会出现在列表中
  • 返回值

    无

  • 备注

    • touch列表每个元素的内容:
      json
      {
          "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才有该字段
      }
      lost列表每个元素的内容:
      json
       {
          "entityId0": str,     // 一个碰撞体所属实体的entityId
          "identifier0": str,   // 一个碰撞体所属实体的identifier
          "shape0": str或None,  // 一个碰撞体的userData
          "entityId1": str,     // 另一个碰撞体所属实体的entityId
          "identifier1": str,   // 另一个碰撞体所属实体的identifier
          "shape1": str或None   // 另一个碰撞体的userData
      }
    • 列表中的碰撞对不分先后,每个碰撞对中的碰撞体0与碰撞体1也不分先后

PhysxTouchServerEvent ​

服务端

  • 描述

    给自定义刚体添加的碰撞体,与其他碰撞体或原版实体发生碰撞/结束碰撞时触发。需要在碰撞体创建时使用PxEventMask.Server才会触发

  • 参数

    参数名
    数据类型
    说明
    touchlist(dict)开始接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,他与其他碰撞体/原版实体开始接触时,会出现在列表中
    lostlist(dict)结束接触的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,他与其他碰撞体/原版实体结束接触时,会出现在列表中
  • 返回值

    无

  • 备注

    • touch列表每个元素的内容:
      json
      {
          "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才有该字段
      }
      lost列表每个元素的内容:
      json
       {
          "entityId0": str,     // 一个碰撞体所属实体的entityId
          "identifier0": str,   // 一个碰撞体所属实体的identifier
          "shape0": str或None,  // 一个碰撞体的userData
          "entityId1": str,     // 另一个碰撞体所属实体的entityId
          "identifier1": str,   // 另一个碰撞体所属实体的identifier
          "shape1": str或None   // 另一个碰撞体的userData
      }
    • 列表中的碰撞对不分先后,每个碰撞对中的碰撞体0与碰撞体1也不分先后

PhysxTriggerClientEvent ​

客户端

  • 描述

    给自定义刚体添加的触发器,与其他碰撞体或原版实体进入/离开触发器时触发。需要在触发器创建时使用PxEventMask.Client才会触发

  • 参数

    参数名
    数据类型
    说明
    foundlist(dict)进入触发器的碰撞体对的信息。它与其他碰撞体/原版实体进入触发器时,会出现在列表中
    lostlist(dict)离开触发器的碰撞体对的信息。它与其他碰撞体/原版实体离开触发器时,会出现在列表中
  • 返回值

    无

  • 备注

    • found列表每个元素的内容:
      json
      {
          "entityId0": str,    // 触发器所属实体的entityId
          "identifier0": str,  // 触发器所属实体的identifier
          "shape0": dict|None, // 触发器的userData (NeEvent::Object)
          "entityId1": str,    // 另一方实体的entityId
          "identifier1": str,  // 另一方实体的identifier
          "shape1": dict|None  // 另一方碰撞体的userData (NeEvent::Object)
      }
      lost列表每个元素的内容:
      json
       {
          "entityId0": str,     // 触发器所属实体的entityId
          "identifier0": str,   // 触发器所属实体的identifier
          "shape0": dict|None,  // 触发器的userData
          "entityId1": str,     // 另一方实体的entityId
          "identifier1": str,   // 另一方实体的identifier
          "shape1": dict|None   // 另一方碰撞体的userData
      }

PhysxTriggerServerEvent ​

服务端

  • 描述

    给自定义刚体添加的触发器,与其他碰撞体或原版实体发生进入触发器/离开触发器时触发。需要在触发器创建时使用PxEventMask.Server才会触发

  • 参数

    参数名
    数据类型
    说明
    foundlist(dict)进入触发器的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Found,它与其他碰撞体/原版实体进入触发器时,会出现在列表中
    lostlist(dict)离开触发器的碰撞体对的信息。一个碰撞体在创建时使用了PxEventMask.Lost,它与其他碰撞体/原版实体离开触发器时,会出现在列表中
  • 返回值

    无

  • 备注

    • found列表每个元素的内容:
      json
      {
          "entityId0": str,    // 触发器所属实体的entityId
          "identifier0": str,  // 触发器所属实体的identifier
          "shape0": str或None, // 触发器的userData (NeEvent::Object)
          "entityId1": str,    // 进入触发器的碰撞体所属实体的entityId
          "identifier1": str,  // 进入触发器的碰撞体所属实体的identifier
          "shape1": str或None  // 进入触发器的碰撞体的userData (NeEvent::Object)
      }
      lost列表每个元素的内容:
      json
          {
          "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的具体角色取决于底层触发逻辑。