codecamp

three.js FirstPersonControls

该类是 FlyControls 的另一个实现。

例子

webgl / geometry / terrain

构造函数

FirstPersonControls( object : Camera, domElement : HTMLDOMElement )

object: 被控制的摄像机。

domElement: 用于事件监听的HTML元素。

创建一个新的 FirstPersonControls 实例。

属性

.activeLook : Boolean

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

.autoForward : Boolean

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

.constrainVertical : Boolean

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

.domElement : HTMLDOMElement

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

.enabled : Boolean

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

.heightCoef : Number

确定当相机的 y 分量接近 .heightMax 时相机移动的速度。默认值为 1。

.heightMax : Number

用于移动速度调整的相机高度上限。默认值为 1。

.heightMin : Number

用于移动速度调整的下摄像机高度限制。默认为 0。

.heightSpeed : Boolean

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

.lookVertical : Boolean

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

.lookSpeed : Number

环视速度。默认为0.005。

.mouseDragOn : Boolean

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

.movementSpeed : Number

移动速度。默认为1。

.object : Camera

被控制的摄像机。

.verticalMax : Number

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

.verticalMin : Number

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

方法

.dispose () : undefined

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

.handleResize () : undefined

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

.lookAt ( vector : Vector3 ) : FirstPersonControls.lookAt ( x : Float, y : Float, z : Float ) : FirstPersonControls

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

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

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

.update ( delta : Number ) : undefined

delta: Time delta value.

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

源代码

examples/jsm/controls/FirstPersonControls.js


three.js DragControls
three.js FlyControls
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

参考

核心 / BufferAttributes

渲染器 / WebXR

开发者参考

WebGL渲染器

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }