three.js PointerLockControls

2023-02-16 17:49 更新

該類的實(shí)現(xiàn)是基于Pointer Lock API的。 對(duì)于第一人稱3D游戲來(lái)說(shuō), PointerLockControls 是一個(gè)非常完美的選擇。

代碼示例

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

構(gòu)造函數(shù)

PointerLockControls( camera : Camera, domElement : HTMLDOMElement )

camera: 渲染場(chǎng)景的攝像機(jī)。

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

創(chuàng)建一個(gè)新的 PointerLockControls 實(shí)例。

事件

change

當(dāng)用戶移動(dòng)鼠標(biāo)時(shí)觸發(fā)。

lock

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

unlock

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

屬性

.domElement : HTMLDOMElement

該 HTMLDOMElement 用于監(jiān)聽(tīng)鼠標(biāo)/觸摸事件,該屬性必須在構(gòu)造函數(shù)中傳入。在此處改變它將不會(huì)設(shè)置新的事件監(jiān)聽(tīng)。

.isLocked : Boolean

控制器是否被鎖定。

.maxPolarAngle : Float

相機(jī)間距,上限。范圍是 0 到 Math.PI 弧度。默認(rèn)為 Math.PI。

.minPolarAngle : Float

相機(jī)間距,下限。范圍是 0 到 Math.PI 弧度。默認(rèn)為 0。

方法

共有方法請(qǐng)參見(jiàn)其基類EventDispatcher。

.connect () : undefined

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

.disconnect () : undefined

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

.getDirection ( target : Vector3 ) : Vector3

target: 目標(biāo)向量。

返回?cái)z像機(jī)的觀看方向。

.lock () : undefined

激活指針鎖定。

.moveForward ( distance : Number ) : undefined

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

平行于xz平面,向前移動(dòng)攝像機(jī)。假定camera.up是y朝上。

.moveRight ( distance : Number ) : undefined

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

平行于xz平面,向側(cè)面移動(dòng)攝像機(jī)。

.unlock () : undefined

退出指針鎖定。

源代碼

examples/jsm/controls/PointerLockControls.js


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)