# 第一人称控制器（[name]）

该类是 [page:FlyControls] 的另一个实现。

## 进口

[name] 是一个附加组件，必须显式导入。 请参考[link:#manual/introduction/Installation Installation / Addons].

`import { FirstPersonControls } from 'three/addons/controls/FirstPersonControls.js';`

## 例子

[example:webgl_geometry_terrain webgl / geometry / terrain ]

## 构造函数

### [name]( [param:Camera object], [param:HTMLDOMElement domElement] )

[page:Camera object]: 被控制的摄像机。

[page:HTMLDOMElement domElement]: 用于事件监听的HTML元素。

创建一个新的 [name] 实例。

## 属性

### [property:Boolean activeLook]

是否能够环视四周。默认为*true*。

### [property:Boolean autoForward]

摄像机是否自动向前移动。默认为*false*。

### [property:Boolean constrainVertical]

垂直环视是否约束在[[page:.verticalMin], [page:.verticalMax]]之间。默认值为*false*。

### [property:HTMLDOMElement domElement]

该 HTMLDOMElement 用于监听鼠标/触摸事件，该属性必须在构造函数中传入。在此处改变它将不会设置新的事件监听。

### [property:Boolean enabled]

是否启用控制器。默认为*true*。

### [property:Number heightCoef]

当Y坐标接近[page:.heightMax]时摄像机的移动速度。默认值为*1*。

### [property:Number heightMax]

用于调节移动速度的摄像机最大高度限制。默认值为*1*。

### [property:Number heightMin]

用于调节移动速度的摄像机最低高度限制。默认值为*0*。

### [property:Boolean heightSpeed]

摄像机的高度是否影响向前移动的速度。默认值为*false*。 使用属性 [page:.heightCoef]、 [page:.heightMin] 和 [page:.heightMax] 来进行配置。

### [property:Boolean lookVertical]

是否能够垂直环视。默认为*true*。

### [property:Number lookSpeed]

环视速度。默认为*0.005*。

### [property:Boolean mouseDragOn]

鼠标是否被按下。只读属性。

### [property:Number movementSpeed]

移动速度。默认为*1*。

### [property:Camera object]

被控制的摄像机。

### [property:Number verticalMax]

你能够垂直环视角度的上限。范围在 0 到 Math.PI 弧度之间。默认为*Math.PI*。

### [property:Number verticalMin]

你能够垂直环视角度的下限。范围在 0 到 Math.PI 弧度之间。默认为*0*。

## 方法

### [method:undefined dispose] ()

若不再需要该控制器，则应当调用此函数。

### [method:undefined handleResize] ()

若应用程序窗口大小发生改变，则应当调用此函数。

### [method:FirstPersonControls lookAt]( [param:Vector3 vector] )
[method:FirstPersonControls lookAt]( [param:Float x], [param:Float y], [param:Float z] )

vector - 一个表示目标位置的向量。

或者，世界空间位置的x、y、z分量。

确保控制器将相机方向朝向到所传入的目标的位置。

### [method:undefined update] ( [param:Number delta] )

[page:Number delta]：时间增量值。

更新控制器，常被用在动画循环中。

## 源代码

[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/FirstPersonControls.js examples/jsm/controls/FirstPersonControls.js]