Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var PointerLockControls = function ( camera, player ) {
- var scope = this;
- var velocity = new THREE.Vector3();
- var pitchObject = new THREE.Object3D();
- pitchObject.add( camera );
- var yawObject = new THREE.Object3D();
- yawObject.position.y = 10;
- yawObject.position.z = 85;
- yawObject.add( pitchObject );
- player.add(yawObject);
- var moveForward = false;
- var moveBackward = false;
- var moveLeft = false;
- var moveRight = false;
- var canJump = false;
- var PI_2 = Math.PI / 2;
- var onMouseMove = function ( event ) {
- if ( scope.enabled === false ) return;
- var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
- var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
- yawObject.rotation.y -= movementX * 0.002;
- pitchObject.rotation.x -= movementY * 0.002;
- pitchObject.rotation.x = Math.max( - PI_2, Math.min( PI_2, pitchObject.rotation.x ) );
- };
- var onKeyDown = function ( e ) {
- switch ( e.keyCode ) {
- case 38: // up
- case 87: // w
- moveForward = true;
- break;
- case 37: // left
- case 65: // a
- moveLeft = true;
- break;
- case 40: // down
- case 83: // s
- moveBackward = true;
- break;
- case 39: // right
- case 68: // d
- moveRight = true;
- break;
- case 32: // space
- if (canJump) velocity.y += 100;
- canJump = false;
- break;
- }
- };
- var onKeyUp = function ( e ) {
- switch( e.keyCode ) {
- case 38: // up
- case 87: // w
- moveForward = false;
- break;
- case 37: // left
- case 65: // a
- moveLeft = false;
- break;
- case 40: // down
- case 83: // a
- moveBackward = false;
- break;
- case 39: // right
- case 68: // d
- moveRight = false;
- break;
- }
- };
- document.addEventListener( 'mousemove', onMouseMove, false );
- document.addEventListener( 'keydown', onKeyDown, false );
- document.addEventListener( 'keyup', onKeyUp, false );
- this.enabled = false;
- this.getObject = function () { return yawObject; };
- this.getDirection = function (targetVec) {
- targetVec.set(0,0,-1);
- quat.multiplyVector3(targetVec);
- }
- this.update = function (delta) {
- if ( !scope.enabled ) return;
- velocity.x -= velocity.x * 10 * delta;
- velocity.z -= velocity.z * 10 * delta;
- velocity.y -= 9.8 * 20 * delta;
- if (moveForward) velocity.z -= 180 * delta;
- if (moveBackward) velocity.z += 180 * delta;
- if (moveLeft) velocity.x -= 180 * delta;
- if (moveRight) velocity.x += 180 * delta
- console.log(velocity.z*delta);
- player.translateX( velocity.x * delta );
- player.translateY( velocity.y * delta );
- player.translateZ( velocity.z * delta);
- // ideally unnecessary
- if ( player.position.y < 10 ) {
- velocity.y = 0;
- player.position.y = 10;
- canJump = true;
- }
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement