camera idle behavior
This commit is contained in:
+44
-73
@@ -7,16 +7,7 @@ import { PointerLockControls } from 'three/examples/jsm/Addons.js';
|
||||
|
||||
class PointerControls {
|
||||
constructor(camera, hero, domElement) {
|
||||
this.moveForward = false;
|
||||
this.moveBackward = false;
|
||||
this.moveLeft = false;
|
||||
this.moveRight = false;
|
||||
|
||||
this.moveUp = false;
|
||||
this.moveDown = false;
|
||||
|
||||
this.rotateLeft = false;
|
||||
this.rotateRight = false;
|
||||
this.kb = {};
|
||||
|
||||
this.canJump = false;
|
||||
this.velocity = new Vector3();
|
||||
@@ -33,37 +24,8 @@ class PointerControls {
|
||||
this.controls = new PointerLockControls(camera, domElement);
|
||||
|
||||
const onKeyDown = (event) => {
|
||||
this.kb[event.code] = true;
|
||||
switch (event.code) {
|
||||
case 'ArrowUp':
|
||||
case 'KeyW':
|
||||
this.moveForward = true;
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
case 'KeyA':
|
||||
this.moveLeft = true;
|
||||
this.rotateLeft = true;
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
case 'KeyS':
|
||||
this.moveBackward = true;
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
case 'KeyD':
|
||||
this.moveRight = true;
|
||||
this.rotateRight = true;
|
||||
break;
|
||||
case 'KeyQ':
|
||||
this.rotateLeft = true;
|
||||
break;
|
||||
case 'KeyE':
|
||||
this.rotateRight = true;
|
||||
break;
|
||||
case 'KeyR':
|
||||
this.moveUp = true;
|
||||
break;
|
||||
case 'KeyF':
|
||||
this.moveDown = true;
|
||||
break;
|
||||
case 'Space':
|
||||
if (this.canJump === true) this.velocity.y += 350;
|
||||
this.canJump = false;
|
||||
@@ -72,38 +34,7 @@ class PointerControls {
|
||||
};
|
||||
|
||||
const onKeyUp = (event) => {
|
||||
switch (event.code) {
|
||||
case 'ArrowUp':
|
||||
case 'KeyW':
|
||||
this.moveForward = false;
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
case 'KeyA':
|
||||
this.moveLeft = false;
|
||||
this.rotateLeft = false;
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
case 'KeyS':
|
||||
this.moveBackward = false;
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
case 'KeyD':
|
||||
this.moveRight = false;
|
||||
this.rotateRight = false;
|
||||
break;
|
||||
case 'KeyQ':
|
||||
this.rotateLeft = false;
|
||||
break;
|
||||
case 'KeyE':
|
||||
this.rotateRight = false;
|
||||
break;
|
||||
case 'KeyR':
|
||||
this.moveUp = false;
|
||||
break;
|
||||
case 'KeyF':
|
||||
this.moveDown = false;
|
||||
break;
|
||||
}
|
||||
this.kb[event.code] = false;
|
||||
};
|
||||
|
||||
document.addEventListener('keydown', onKeyDown);
|
||||
@@ -167,7 +98,47 @@ class PointerControls {
|
||||
|
||||
}
|
||||
|
||||
moving(){
|
||||
get moveForward(){
|
||||
return this.kb['ArrowUp'] || this.kb['KeyW'] || false
|
||||
}
|
||||
|
||||
get moveLeft(){
|
||||
return this.kb['ArrowLeft'] || this.kb['KeyA'] || false
|
||||
}
|
||||
|
||||
get rotateLeft(){
|
||||
return this.moveLeft;
|
||||
}
|
||||
|
||||
get moveRight(){
|
||||
return this.kb['ArrowRight'] || this.kb['KeyD'] || false
|
||||
}
|
||||
|
||||
get rotateRight(){
|
||||
return this.moveRight;
|
||||
}
|
||||
|
||||
get moveBackward(){
|
||||
return this.kb['ArrowDown'] || this.kb['KeyS'] || false
|
||||
}
|
||||
|
||||
get moveUp(){
|
||||
return this.kb['KeyR'] || false
|
||||
}
|
||||
|
||||
get moveDown(){
|
||||
return this.kb['KeyF'] || false
|
||||
}
|
||||
|
||||
get cameraLeft(){
|
||||
return this.kb['KeyQ'] || false
|
||||
}
|
||||
|
||||
get cameraRight(){
|
||||
return this.kb['KeyE'] || false
|
||||
}
|
||||
|
||||
get moving(){
|
||||
return this.moveForward || this.moveBackward || this.moveLeft || this.moveRight;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user