# 碰撞体
# 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