ThingOrigin.js
    Preparing search index...

    Class TPhysx

    Index

    Methods

    • Parameters

      • triggerLogicActor: any
      • listener: any

      Returns void

    • 创建立方体形状

      Parameters

      • boxShapeInfo: any
      • shapeFlags: any
      • material: any

      Returns any

      {Shape}

    • 创建胶囊体形状 PhysX 胶囊默认沿 X 轴;通过 axis 可指定为 Y 或 Z(会设置 shape 的 local pose 旋转)。

      Parameters

      • capsuleShapeInfo: any
      • shapeFlags: any
      • material: any

      Returns any

      {Shape}

    • 创建物理辅助线

      Parameters

      • model: any

        模型

      • helperInfo: any

        辅助线信息

      Returns any

      {Object3D}

    • 创建物理材质

      Parameters

      • materialInfo: any

      Returns any

      {Material}

    • 创建物理对象

      Parameters

      • actorInfo: any
      • shape: any

      Returns any

      {Actor}

    • 直接创建物理平面静态刚体(推荐) 使用 PhysX CreatePlane:平面由法线 (nx,ny,nz) 和到原点距离 d 定义,方程 n·x + d = 0。

      Parameters

      • planeInfo: any
      • material: any

      Returns any

      PxRigidStatic,需再加入场景

    • 创建平面形状(PxPlaneGeometry 为无限大平面,无尺寸参数;法线由附着 actor 的 pose 决定)

      Parameters

      • _planeShapeInfo: any

        保留参数以兼容调用方,几何本身无尺寸

      • shapeFlags: any
      • material: any

      Returns any

    • 创建物理场景(需先调用 initPhysx)

      Parameters

      • gravityInfo: any

      Returns any

      {Scene}

    • 创建形状标志

      Parameters

      • shapeFlagsInfo: any

      Returns any

      {ShapeFlags}

    • 创建球体形状

      Parameters

      • sphereShapeInfo: any
      • shapeFlags: any
      • material: any

      Returns any

      {Shape}

    • 创建Vec3向量

      Parameters

      • vec3Info: any

      Returns any

      {Vec3} 向量

    • 预加载 physx-js-webidl.wasm:优先经 IndexedDB(与 TFont.loadFont 相同流程:accessInsertModel), 未缓存则下载并写入再读;已缓存则 blob URL fetch 为 ArrayBuffer。再构造 Emscripten Module(instantiateWasm 避免 MIME 问题)。 可通过 sceneData.params.resource.physxWasmCache 覆盖 { indexedDB: { active, id } }(id 建议 ≥11,避免与字体 0–10 冲突)。

      Returns Promise<LoadPhysxWasmFileResult>

      成功 { module, success: true },失败 false

    • 射线检测

      Parameters

      • origin: { x: number; y: number; z: number }

        射线起点 { x, y, z }

      • direction: { x: number; y: number; z: number }

        射线方向(需归一化){ x, y, z }

      • maxDistance: number = 1000

        最大检测距离

      Returns {
          actor?: any;
          distance?: number;
          hit: boolean;
          normal?: { x: number; y: number; z: number };
          position?: { x: number; y: number; z: number };
          shape?: any;
      }

      检测结果 { hit: 是否命中, position?: 命中点, normal?: 法线, distance?: 距离, actor?: 命中的Actor }

    • 射线检测(带 JS 过滤回调)

      • 基于已有的 PxRaycastBuffer10,不再直接碰 PxQueryFilterCallbackImpl,避免 WASM 内存越界问题
      • 遍历所有命中结果,按距离从近到远找到第一个通过 onRaycast 的对象

      Parameters

      • origin: { x: number; y: number; z: number }
      • direction: { x: number; y: number; z: number }
      • maxDistance: number
      • onRaycast: (shapeOrActorId: number) => boolean

      Returns {
          distance?: number;
          hit: boolean;
          normal?: { x: number; y: number; z: number };
          position?: { x: number; y: number; z: number };
          shapeId?: number;
      }

    • Parameters

      • pxActor: any
      • modelInfo: any

      Returns void

    • 设置碰撞检测模式

      Parameters

      • actor: any

        物理刚体对象

      • collisionDetectionMode: string

        碰撞检测模式: Continuous, ContinuousDynamic, ContinuousSpeculative, Discrete

      Returns void

    • 更新辅助线框的大小

      Parameters

      • container: any

        包含辅助线框的容器对象

      • newSize: { depth: number; height: number; width: number }

        新的尺寸 { width, height, depth }

      Returns boolean

      是否成功更新