# 场景
# ClearRemoteVisualSync
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
清除该自定义 PhysX 刚体的运行时远端同步配置,恢复实体定义的默认带宽优化行为,仅服务端可调用。
参数
无
返回值
数据类型说明 bool 是否成功 示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.ClearRemoteVisualSync()
# ConnectPvd
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
连接本机 PhysX Visual Debugger(PVD)以调试当前 PhysX 场景
参数
无
返回值
数据类型说明 bool 是否连接成功 备注
- 全局 PhysX 调试操作,与当前组件绑定的实体无关。请先启动 PVD 并监听本机端口,再调用该接口
示例
import mod.server.extraServerApi as serverApi
levelComp = serverApi.GetEngineCompFactory().CreatePhysx(serverApi.GetLevelId())
levelComp.ConnectPvd()
# DisconnectPvd
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
断开当前 PhysX 场景与本机 PhysX Visual Debugger(PVD)的连接
参数
无
返回值
数据类型说明 None 无返回值 备注
- 全局 PhysX 调试操作,与当前组件绑定的实体无关
示例
import mod.server.extraServerApi as serverApi
levelComp = serverApi.GetEngineCompFactory().CreatePhysx(serverApi.GetLevelId())
levelComp.DisconnectPvd()
# Raycast
服务端客户端
# 服务端接口
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
射线检测,获取与射线相交的碰撞体。目前仅支持获取自定义刚体
参数
参数名 数据类型说明 dimensionId int 维度id origin tuple(float,float,float) 射线的起点 dir tuple(float,float,float) 射线的方向 maxDist float 射线的最大长度,最大128 maxHits int 获取射线相交的前N个碰撞体,最大为16,默认为1 返回值
数据类型说明 list(dict) 返回相交的碰撞体的信息,。每个元素的内容见备注 备注
- 返回列表的每个元素为一个dict,内容如下: { "entityId": str, # 碰撞体所属的实体id "userData": str或None, # 碰撞体的userData "pos": (float,float,float), # 相交的位置 "normal": (float,float,float), # 碰撞体在相交位置的法线 "dist": float, # 射线起点与相交点的距离 }
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(levelId)
print comp.Raycast(0, (0,80,0), (0,1,0), 5)
# 客户端接口
method in mod.client.component.physxCompClient.PhysxComponentClient
描述
射线检测,获取与射线相交的碰撞体。目前仅支持获取自定义刚体
参数
参数名 数据类型说明 origin tuple(float,float,float) 射线的起点 dir tuple(float,float,float) 射线的方向 maxDist float 射线的最大长度,最大128 maxHits int 获取射线相交的前N个碰撞体,最大为16,默认为1 返回值
数据类型说明 list(dict) 按顺序返回相交的碰撞体的信息。每个元素的内容见备注 备注
- 返回列表的每个元素为一个dict,内容如下: { "entityId": str, # 碰撞体所属的实体id "userData": str或None, # 碰撞体的userData "pos": (float,float,float), # 相交的位置 "normal": (float,float,float), # 碰撞体在相交位置的法线 "dist": float, # 射线起点与相交点的距离 }
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePhysx(levelId)
print comp.Raycast(0, (0,80,0), (0,1,0), 5)
# SampleBuoyancy
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
使用C++批量采样自定义刚体的浸没体积、浮力合力和浮心;本接口只计算,不施力,仅服务端可调用。
参数
参数名 数据类型说明 samples list(tuple(float,float,float,float)) 局部空间采样点列表,每项为(x,y,z,体积权重),最多4096项 yOffset float 所有采样点的局部Y轴附加偏移 fluidDensities dict 液体identifier到密度的映射,例如{"minecraft:water":90.0} gravityMagnitude float 重力加速度绝对值,必须大于0,默认9.81 forceScale float 浮力调节倍率,必须大于0,默认2.0 返回值
数据类型说明 dict 成功时返回fSub、force、center、position、totalVolume、submergedVolume和queryCount,失败返回None 备注
- 本接口读取刚体姿态和已加载地形中的液体,不会修改重力、速度、阻尼或施加浮力。
示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
result = comp.SampleBuoyancy(
[(0.0, 0.0, 0.0, 1.0)],
-1.5,
{"minecraft:water": 90.0, "minecraft:flowing_water": 90.0}
)
# SetRemoteVisualSync
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
设置该自定义 PhysX 刚体的远端位置与四元数同步降频参数,整个刚体的所有 shape/mesh 一并生效,仅服务端可调用。
参数
参数名 数据类型说明 maxOptimizedDistance float 开始按距离线性降低同步频率的最大距离,必须大于等于0 maxDroppedTicks int 允许连续跳过的最大服务端 Tick 数,0表示禁用远距离降频并始终完整同步 返回值
数据类型说明 bool 是否成功 示例
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePhysx(entityId)
comp.SetRemoteVisualSync(80.0, 0) # 80 格内不丢同步 tick
# SetSceneGravity
服务端
method in mod.server.component.physxCompServer.PhysxComponentServer
描述
设置指定维度 PhysX 场景的全局重力,仅服务端可调用;立即影响该维度内全部受重力的动态 PhysX 刚体。
参数
参数名 数据类型说明 dimensionId int 维度 ID gravity tuple(float,float,float) 重力加速度向量,例如(0.0, -9.8, 0.0) 返回值
数据类型说明 bool 是否成功 示例
import mod.server.extraServerApi as serverApi
levelComp = serverApi.GetEngineCompFactory().CreatePhysx(serverApi.GetLevelId())
levelComp.SetSceneGravity(0, (0.0, -9.8, 0.0))