# 场景

# 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))

ClearRemoteVisualSync

ConnectPvd

DisconnectPvd

Raycast

服务端接口

客户端接口

SampleBuoyancy

SetRemoteVisualSync

SetSceneGravity