浏览代码

Merge pull request #19585 from WestLangley/dev_pointer_lock_2

PointerLockControls: add min/max polar angle
Mr.doob 5 年之前
父节点
当前提交
cfa0429363
共有 2 个文件被更改,包括 9 次插入1 次删除
  1. 6 1
      examples/js/controls/PointerLockControls.js
  2. 3 0
      examples/jsm/controls/PointerLockControls.d.ts

+ 6 - 1
examples/js/controls/PointerLockControls.js

@@ -16,6 +16,11 @@ THREE.PointerLockControls = function ( camera, domElement ) {
 	this.domElement = domElement;
 	this.isLocked = false;
 
+	// Set to constrain the pitch of the camera
+	// Range is 0 to Math.PI radians
+	this.minPolarAngle = 0; // radians
+	this.maxPolarAngle = Math.PI; // radians
+
 	//
 	// internals
 	//
@@ -44,7 +49,7 @@ THREE.PointerLockControls = function ( camera, domElement ) {
 		euler.y -= movementX * 0.002;
 		euler.x -= movementY * 0.002;
 
-		euler.x = Math.max( - PI_2, Math.min( PI_2, euler.x ) );
+		euler.x = Math.max( PI_2 - scope.maxPolarAngle, Math.min( PI_2 - scope.minPolarAngle, euler.x ) );
 
 		camera.quaternion.setFromEuler( euler );
 

+ 3 - 0
examples/jsm/controls/PointerLockControls.d.ts

@@ -14,6 +14,9 @@ export class PointerLockControls extends EventDispatcher {
 
 	isLocked: boolean;
 
+	minPolarAngle: number;
+	maxPolarAngle: number;
+
 	connect(): void;
 	disconnect(): void;
 	dispose(): void;