three.js PointerLockControls

2023-02-16 17:49 更新

該類的實現是基于Pointer Lock API的。 對于第一人稱3D游戲來說, PointerLockControls 是一個非常完美的選擇。

代碼示例

const controls = new PointerLockControls( camera, document.body );

// add event listener to show/hide a UI (e.g. the game's menu)

controls.addEventListener( 'lock', function () {

	menu.style.display = 'none';

} );

controls.addEventListener( 'unlock', function () {

	menu.style.display = 'block';

} );

例子

misc / controls / pointerlock

構造函數

PointerLockControls( camera : Camera, domElement : HTMLDOMElement )

camera: 渲染場景的攝像機。

domElement: 用于事件監(jiān)聽的HTML元素。

創(chuàng)建一個新的 PointerLockControls 實例。

事件

change

當用戶移動鼠標時觸發(fā)。

lock

當指針狀態(tài)為 “l(fā)ocked” (即鼠標被捕獲)時觸發(fā)。

unlock

當指針狀態(tài)為 “unlocked” (即鼠標不再被捕獲)時觸發(fā)。

屬性

.domElement : HTMLDOMElement

該 HTMLDOMElement 用于監(jiān)聽鼠標/觸摸事件,該屬性必須在構造函數中傳入。在此處改變它將不會設置新的事件監(jiān)聽。

.isLocked : Boolean

控制器是否被鎖定。

.maxPolarAngle : Float

相機間距,上限。范圍是 0 到 Math.PI 弧度。默認為 Math.PI。

.minPolarAngle : Float

相機間距,下限。范圍是 0 到 Math.PI 弧度。默認為 0。

方法

共有方法請參見其基類EventDispatcher。

.connect () : undefined

添加控制器的事件監(jiān)聽。

.disconnect () : undefined

移除控制器的事件監(jiān)聽。

.getDirection ( target : Vector3 ) : Vector3

target: 目標向量。

返回攝像機的觀看方向。

.lock () : undefined

激活指針鎖定。

.moveForward ( distance : Number ) : undefined

distance: 距離(區(qū)分正負)。

平行于xz平面,向前移動攝像機。假定camera.up是y朝上。

.moveRight ( distance : Number ) : undefined

distance: 距離(區(qū)分正負)。

平行于xz平面,向側面移動攝像機。

.unlock () : undefined

退出指針鎖定。

源代碼

examples/jsm/controls/PointerLockControls.js


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號