# 碰撞体

# AddBoxGeometry

服务端客户端

# 服务端接口

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    给自定义刚体创建盒形碰撞体

  • 参数

    参数名
    数据类型
    说明
    localTransform tuple(float,float,float) 盒子中心相对实体原点的偏移
    halfX float 表示盒子长度的一半
    halfY float 表示盒子高度的一半
    halfZ float 表示盒子宽度的一半
    staticFriction float 静摩擦系数
    dynamicFriction float 动摩擦系数
    restitution float 弹性恢复系数,范围:[0, 1]
    eventMask int PxEventMask枚举,用于监听碰撞事件,默认为PxEventMask.Null,即不需要碰撞事件
    userData None或str 可记录自定义数据,长度不超过20,默认为None
    density float 碰撞体密度,必须大于0,影响刚体总质量、质心和惯性张量,默认为10.0
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 可在创建刚体后的任意服务端脚本时机调用,运行时添加后会自动重算刚体质量、质心和惯性张量;碰撞体配置本身不存档
    • 世界中同时存在的碰撞体上限为8192个
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.AddBoxGeometry((0, 0.9, 0), 0.3, 0.9, 0.3, 0.05, 0.05, 0)

# 客户端接口

method in mod.client.component.physxCompClient.PhysxComponentClient

  • 描述

    给客户端本地自定义刚体创建盒形碰撞体

  • 参数

    参数名
    数据类型
    说明
    localTransform tuple(float,float,float) 盒子中心相对实体原点的偏移
    halfX float 盒子长度的一半
    halfY float 盒子高度的一半
    halfZ float 盒子宽度的一半
    staticFriction float 静摩擦系数
    dynamicFriction float 动摩擦系数
    restitution float 弹性恢复系数,范围:[0, 1]
    eventMask int PxEventMask枚举,碰撞事件掩码,默认为PxEventMask.Null
    userData None或str 自定义数据,长度不超过20,默认为None
    density float 碰撞体密度,必须大于0,默认为10.0
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 仅添加到客户端本地 PhysX 副本,不会自动同步到服务端;世界中同时存在的碰撞体上限为8192个

# AddBoxTrigger

服务端

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    给自定义刚体创建盒子形触发器

  • 参数

    参数名
    数据类型
    说明
    localTransform tuple(float,float,float) 盒子中心相对实体原点的偏移
    halfX float 盒子在x轴方向的一半长度
    halfY float 盒子在y轴方向的一半长度
    halfZ float 盒子在z轴方向的一半长度
    eventMask int PxEventMask枚举,用于监听碰撞事件,默认为PxEventMask.Null,即不需要碰撞事件
    userData None或str 可记录自定义数据,长度不超过20,默认为None
    density float 触发器碰撞体密度,必须大于0;触发器不参与刚体质量计算,该参数用于保持接口参数格式一致,默认为10.0
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 可在创建刚体后的任意服务端脚本时机调用;触发器本身不参与刚体质量计算,碰撞体配置本身不存档
    • 世界中同时存在的碰撞体上限为8192个
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.AddBoxTrigger((0, 0.9, 0), 0.3, 0.9, 0.3)

# AddCapsuleGeometry

服务端

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    给自定义刚体创建胶囊形碰撞体

  • 参数

    参数名
    数据类型
    说明
    localTransform tuple(float,float,float) 胶囊中心相对实体原点的偏移
    radius float 胶囊半径
    halfHeight float 胶囊高度的一半
    staticFriction float 静摩擦系数
    dynamicFriction float 动摩擦系数
    restitution float 弹性恢复系数,范围:[0, 1]
    eventMask int PxEventMask枚举,用于监听碰撞事件,默认为PxEventMask.Null,即不需要碰撞事件
    userData None或str 可记录自定义数据,长度不超过20,默认为None
    density float 碰撞体密度,必须大于0,影响刚体总质量、质心和惯性张量,默认为10.0
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 可在创建刚体后的任意服务端脚本时机调用,运行时添加后会自动重算刚体质量、质心和惯性张量;碰撞体配置本身不存档
    • 世界中同时存在的碰撞体上限为8192个
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.AddCapsuleGeometry((0, 0.9, 0), 0.3, 0.9, 0.05, 0.05, 0)

# AddSphereGeometry

服务端

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    给自定义刚体创建球形碰撞体

  • 参数

    参数名
    数据类型
    说明
    localTransform tuple(float,float,float) 球心相对实体原点的偏移
    radius float 球半径
    staticFriction float 静摩擦系数
    dynamicFriction float 动摩擦系数
    restitution float 弹性恢复系数,范围:[0, 1]
    eventMask int PxEventMask枚举,用于监听碰撞事件,默认为PxEventMask.Null,即不需要碰撞事件
    userData None或str 可记录自定义数据,长度不超过20,默认为None
    density float 碰撞体密度,必须大于0,影响刚体总质量、质心和惯性张量,默认为10.0
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 可在创建刚体后的任意服务端脚本时机调用,运行时添加后会自动重算刚体质量、质心和惯性张量;碰撞体配置本身不存档
    • 世界中同时存在的碰撞体上限为8192个
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.AddSphereGeometry((0, 0.9, 0), 0.3, 0.05, 0.05, 0)

# GetShapeCount

服务端客户端

# 服务端接口

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    获取自定义刚体当前的碰撞 shape 数量

  • 参数

    无

  • 返回值

    数据类型
    说明
    int shape 数量;非自定义刚体时返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
print comp.GetShapeCount()

# 客户端接口

method in mod.client.component.physxCompClient.PhysxComponentClient

  • 描述

    获取客户端本地自定义刚体当前的碰撞 shape 数量

  • 参数

    无

  • 返回值

    数据类型
    说明
    int shape 数量;客户端没有本地自定义刚体时返回None

# GetShapeInfo

服务端客户端

# 服务端接口

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    获取指定碰撞 shape 的信息

  • 参数

    参数名
    数据类型
    说明
    shapeIndex int shape 索引,范围为 0 到 GetShapeCount()-1
  • 返回值

    数据类型
    说明
    dict 包含localTransform、userData、geometry等信息;无效索引返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
print comp.GetShapeInfo(0) # 返回第一个 shape 的 localTransform、userData 等信息

# 客户端接口

method in mod.client.component.physxCompClient.PhysxComponentClient

  • 描述

    获取客户端本地指定碰撞 shape 的信息

  • 参数

    参数名
    数据类型
    说明
    shapeIndex int shape 索引,范围为 0 到 GetShapeCount()-1
  • 返回值

    数据类型
    说明
    dict 包含localTransform、userData、geometry等信息;无效索引返回None

# RemoveShape

服务端客户端

# 服务端接口

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    删除自定义刚体上指定索引的碰撞 shape,适用于盒形、胶囊形、球形碰撞体和触发器

  • 参数

    参数名
    数据类型
    说明
    shapeIndex int shape 索引,范围为 0 到 GetShapeCount()-1
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 通用删除接口,不需要按 Shape 类型分别调用 RemoveBoxGeometry 等接口。删除后后续 Shape 的索引可能变化,建议重新查询后再删除
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.RemoveShape(0) # 删除第一个已添加的碰撞 shape

# 客户端接口

method in mod.client.component.physxCompClient.PhysxComponentClient

  • 描述

    删除客户端本地自定义刚体上指定索引的碰撞 shape

  • 参数

    参数名
    数据类型
    说明
    shapeIndex int shape 索引,范围为 0 到 GetShapeCount()-1
  • 返回值

    数据类型
    说明
    bool 是否成功
  • 备注

    • 仅操作客户端本地 PhysX 副本,不会同步删除服务端 Shape;删除后后续 Shape 的索引可能变化

# RemoveShapeByUserData

服务端客户端

# 服务端接口

method in mod.server.component.physxCompServer.PhysxComponentServer

  • 描述

    删除所有 userData 与指定值相同的碰撞 shape

  • 参数

    参数名
    数据类型
    说明
    userData str 创建 shape 时传入的自定义标识
  • 返回值

    数据类型
    说明
    int 实际删除的 shape 数量
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
removedCount = comp.RemoveShapeByUserData("wheel")

# 客户端接口

method in mod.client.component.physxCompClient.PhysxComponentClient

  • 描述

    删除客户端本地所有 userData 与指定值相同的碰撞 shape

  • 参数

    参数名
    数据类型
    说明
    userData str 创建 shape 时传入的自定义标识
  • 返回值

    数据类型
    说明
    int 实际删除的 shape 数量
  • 备注

    • 仅操作客户端本地 PhysX 副本,不会同步删除服务端 Shape

AddBoxGeometry

服务端接口

客户端接口

AddBoxTrigger

AddCapsuleGeometry

AddSphereGeometry

GetShapeCount

服务端接口

客户端接口

GetShapeInfo

服务端接口

客户端接口

RemoveShape

服务端接口

客户端接口

RemoveShapeByUserData

服务端接口

客户端接口