FirstPersonControl
NIVIOBIM第一人称控制功能模块,提供3D场景的第一人称漫游控制。继承自KeyInputControl,增加了重力系统、碰撞检测、鼠标样式控制等高级功能。
类定义
javascript
class FirstPersonControl extends KeyInputControl构造函数
constructor(viewer3D, options)
创建第一人称控制插件实例,初始化第一人称控制,设置控制参数。
参数:
viewer3D{Viewer3D} - Viewer3D实例options{Object} - 插件配置选项
示例:
javascript
// 创建第一人称控制插件
const firstPersonControl = new FirstPersonControl(viewer3D, {
name: 'FirstPersonControl'
});属性
enabled
第一人称控制的启用状态,控制第一人称控制插件的启用和禁用。
类型: {boolean}
默认值: false
示例:
javascript
// 启用第一人称控制
firstPersonControl.enabled = true;
// 禁用第一人称控制
firstPersonControl.enabled = false;enableGravity
是否启用重力系统,控制是否模拟重力效果。
类型: {boolean}
默认值: false
示例:
javascript
// 启用重力系统
firstPersonControl.enableGravity = true;
// 获取重力系统状态
const isGravityEnabled = firstPersonControl.enableGravity;enableCollision
是否启用碰撞检测,控制是否防止相机穿墙。
类型: {boolean}
默认值: false
示例:
javascript
// 启用碰撞检测
firstPersonControl.enableCollision = true;
// 获取碰撞检测状态
const isCollisionEnabled = firstPersonControl.enableCollision;方法
mouseStyleSwitch(boolean)
切换鼠标样式,控制鼠标样式的切换,在第一人称模式下使用特殊的鼠标样式。
参数:
boolean{boolean} - 是否使用默认鼠标样式,true为默认样式,false为第一人称样式
示例:
javascript
// 切换到第一人称鼠标样式
firstPersonControl.mouseStyleSwitch(false);
// 切换到默认鼠标样式
firstPersonControl.mouseStyleSwitch(true);gravityTest()
重力测试,执行重力系统的测试,模拟真实的重力效果。使用射线检测检测地面距离,实现自由落体运动和地面吸附。
示例:
javascript
// 此方法由update方法自动调用
// 当enableGravity为true时,会自动执行重力测试collisionTest()
碰撞测试,执行碰撞检测系统的测试,防止相机穿墙。使用射线检测检测前后左右四个方向的障碍物,阻止相机移动。
示例:
javascript
// 此方法由update方法自动调用
// 当enableCollision为true且正在移动时,会自动执行碰撞测试update()
更新第一人称控制,在渲染循环中更新第一人称控制,包括视角锁定、重力测试、碰撞测试等。保持第一人称视角,执行重力和碰撞检测,调用父类的更新方法。
示例:
javascript
// 在渲染循环中更新第一人称控制
firstPersonControl.update();使用场景
第一人称漫游
- 3D场景的第一人称视角漫游
- 沉浸式的用户体验
- 游戏风格的交互控制
重力系统
- 模拟真实的重力效果
- 自由落体运动
- 物理碰撞检测
碰撞检测
- 防止相机穿墙
- 真实的物理碰撞
- 平滑的移动体验
交互控制
- 键盘控制移动
- 鼠标控制视角
- 自动鼠标样式切换
相关链接
- KeyInputControl - 键盘输入控制基类
- Plugin - 插件基类
- Viewer3D - 主引擎类