Skip to content

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场景的第一人称视角漫游
  • 沉浸式的用户体验
  • 游戏风格的交互控制

重力系统

  • 模拟真实的重力效果
  • 自由落体运动
  • 物理碰撞检测

碰撞检测

  • 防止相机穿墙
  • 真实的物理碰撞
  • 平滑的移动体验

交互控制

  • 键盘控制移动
  • 鼠标控制视角
  • 自动鼠标样式切换

相关链接

文档内容为北京逆维悦动科技有限公司版权所有,禁止未授权转载