mirror of
https://github.com/galacean/engine.git
synced 2026-06-20 21:06:22 +08:00
1.6 KiB
1.6 KiB
order, title, type, label
| order | title | type | label |
|---|---|---|---|
| 5 | 交互管理器 | XR | XR |
交互管理器从属于 XRManager 实例,你可以通过 xrManager.inputManager 获取,他管理所有的输入设备,包括但不限于:
- 手柄
- 头显
- 手
- ……
方法
| 方法 | 解释 |
|---|---|
| getTrackedDevice | 通过类型获取某个设备 |
| addTrackedDeviceChangedListener | 添加监听设备变化的函数 |
| removeTrackedDeviceChangedListener | 移除监听设备变化的函数 |
使用
通过如下代码可以监听设备的更新信息:
const { inputManager } = xrManager.inputManager;
inputManager.addTrackedDeviceChangedListener(
(added: readonly XRInput[], removed: readonly XRInput[]) => {
// 此处添加对新增设备和移除设备的处理
}
);
通过如下代码可以获取左手手柄的姿态:
const controller = inputManager.getTrackedDevice<XRController>(
XRTrackedInputDevice.LeftController
);
// 手柄的姿态
controller.gripPose.position;
controller.gripPose.rotation;
controller.gripPose.matrix;
// 是否按下 select 键
controller.isButtonDown(XRInputButton.Select);
// 是否抬起 select 键
controller.isButtonUp(XRInputButton.Select);
// 是否一直按着 select 键
controller.isButtonHeldDown(XRInputButton.Select);
XRInputButton.Select对应 WebXR 原生XRInputSourceEventType.selectXXX事件XRInputButton.Squeeze对应 WebXR 原生XRInputSourceEventType.squeezeXXX事件