KeyInputControl
NIVIOBIM键盘输入控制功能模块,提供3D场景的键盘漫游控制。继承自Plugin,支持WASD键位和方向键控制相机移动,实现第一人称视角的漫游体验。
类定义
class KeyInputControl extends Plugin构造函数
constructor(viewer3D, options)
创建键盘输入控制插件实例,初始化键盘输入控制,设置轨道控制器、键位映射、移动速度等。自动绑定键盘事件处理函数,准备接收键盘输入。
参数:
viewer3D{Viewer3D} - Viewer3D实例,提供场景和相机管理器访问。详见 Viewer3Doptions{Object} - 插件配置选项
示例:
// 创建键盘输入控制插件
const keyInputControl = new KeyInputControl(viewer3D, {
name: 'KeyInputControl'
});
// 设置移动速度
keyInputControl.moveSpeed = 10;
// 启用键盘控制
keyInputControl.enabled = true;属性
orbitControl
轨道控制器实例,用于控制相机的移动和旋转。
类型: {OrbitControls}
只读: true
示例:
// 获取轨道控制器
const orbitControl = keyInputControl.orbitControl;keyCode
键位映射对象,包含所有支持的键盘键位映射。
类型: {Object}
只读: true
示例:
// 获取键位映射
const keyCode = keyInputControl.keyCode;
console.log('W键码:', keyCode.KEY_W);moveSpeed
移动速度,控制相机移动的速度,单位为单位/秒。
类型: {number}
默认值: 6
示例:
// 设置移动速度
keyInputControl.moveSpeed = 10;
// 获取移动速度
console.log('移动速度:', keyInputControl.moveSpeed);方法
moveFront()
向前移动,设置相机向前移动的执行函数,对应W键。
示例:
// 开始向前移动
keyInputControl.moveFront();moveBack()
向后移动,设置相机向后移动的执行函数,对应S键。
示例:
// 开始向后移动
keyInputControl.moveBack();moveLeft()
向左移动,设置相机向左移动的执行函数,对应A键。
示例:
// 开始向左移动
keyInputControl.moveLeft();moveRight()
向右移动,设置相机向右移动的执行函数,对应D键。
示例:
// 开始向右移动
keyInputControl.moveRight();moveUp()
向上移动,设置相机向上移动的执行函数,对应Q键。
示例:
// 开始向上移动
keyInputControl.moveUp();moveDown()
向下移动,设置相机向下移动的执行函数,对应E键。
示例:
// 开始向下移动
keyInputControl.moveDown();stopFront()
停止向前移动,停止相机向前移动,对应W键释放。
示例:
// 停止向前移动
keyInputControl.stopFront();stopBack()
停止向后移动,停止相机向后移动,对应S键释放。
示例:
// 停止向后移动
keyInputControl.stopBack();stopLeft()
停止向左移动,停止相机向左移动,对应A键释放。
示例:
// 停止向左移动
keyInputControl.stopLeft();stopRight()
停止向右移动,停止相机向右移动,对应D键释放。
示例:
// 停止向右移动
keyInputControl.stopRight();stopUp()
停止向上移动,停止相机向上移动,对应Q键释放。
示例:
// 停止向上移动
keyInputControl.stopUp();stopDown()
停止向下移动,停止相机向下移动,对应E键释放。
示例:
// 停止向下移动
keyInputControl.stopDown();moveStop()
停止所有移动,停止所有方向的移动,清除所有移动执行函数。
示例:
// 停止所有移动
keyInputControl.moveStop();setAddEvent()
添加键盘事件监听器,为document.body添加键盘按下和释放事件监听器。
示例:
// 添加键盘事件监听器
keyInputControl.setAddEvent();removeEvent()
移除键盘事件监听器,从document.body移除键盘按下和释放事件监听器。
示例:
// 移除键盘事件监听器
keyInputControl.removeEvent();onKeyDown(event)
键盘按下事件处理,处理键盘按下事件,根据按下的键位执行相应的移动操作。
参数:
event{KeyboardEvent} - 键盘事件对象
示例:
// 此方法由键盘事件自动调用
// 当按下W键时,会调用moveFront()方法onKeyUp(event)
键盘释放事件处理,处理键盘释放事件,根据释放的键位停止相应的移动操作。
参数:
event{KeyboardEvent} - 键盘事件对象
示例:
// 此方法由键盘事件自动调用
// 当释放W键时,会调用stopFront()方法update(param)
更新键盘输入控制,在渲染循环中更新键盘输入控制,执行所有激活的移动操作。
参数:
param{number} - 时间参数,用于动画更新
示例:
// 在渲染循环中更新键盘输入控制
keyInputControl.update(deltaTime);dispose()
销毁键盘输入控制插件,清理插件资源,移除键盘事件监听器,调用父类的销毁方法。
示例:
// 销毁键盘输入控制插件
keyInputControl.dispose();使用场景
第一人称漫游
- 使用WASD键控制前后左右移动
- 使用QE键控制上下移动
- 实现第一人称视角的场景漫游
场景导航
- 快速浏览大型场景
- 精确定位到指定位置
- 配合鼠标控制实现全方位导航
游戏式交互
- 提供类似游戏的控制体验
- 适合需要频繁移动的应用场景
- 支持自定义键位映射
演示和展示
- 在演示中快速切换视角
- 配合其他控制方式使用
- 提供流畅的导航体验
键位说明
| 键位 | 功能 | 说明 |
|---|---|---|
| W / ↑ | 前进 | 沿相机前方向移动 |
| S / ↓ | 后退 | 沿相机后方向移动 |
| A / ← | 左移 | 沿相机左方向移动 |
| D / → | 右移 | 沿相机右方向移动 |
| Q | 上升 | 沿世界Y轴正方向移动 |
| E | 下降 | 沿世界Y轴负方向移动 |
相关链接
- Plugin - 插件基类
- FirstPersonControl - 第一人称控制
- Viewer3D - 主引擎类
- CameraManager - 相机管理器