Pārlūkot izejas kodu

Add min/max polar angle

WestLangley 5 gadi atpakaļ
vecāks
revīzija
fd06be533b

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

@@ -16,6 +16,11 @@ THREE.PointerLockControls = function ( camera, domElement ) {
 	this.domElement = domElement;
 	this.domElement = domElement;
 	this.isLocked = false;
 	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
 	// internals
 	//
 	//
@@ -44,7 +49,7 @@ THREE.PointerLockControls = function ( camera, domElement ) {
 		euler.y -= movementX * 0.002;
 		euler.y -= movementX * 0.002;
 		euler.x -= movementY * 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 );
 		camera.quaternion.setFromEuler( euler );
 
 

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

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