Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2016
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  var PointerLockControls = function ( camera, player ) {
  2.     var scope = this;
  3.     var velocity = new THREE.Vector3();
  4.  
  5.     var pitchObject = new THREE.Object3D();
  6.     pitchObject.add( camera );
  7.  
  8.     var yawObject = new THREE.Object3D();
  9.     yawObject.position.y = 10;
  10.         yawObject.position.z = 85;
  11.     yawObject.add( pitchObject );
  12.     player.add(yawObject);
  13.  
  14.     var moveForward = false;
  15.     var moveBackward = false;
  16.     var moveLeft = false;
  17.     var moveRight = false;
  18.  
  19.     var canJump = false;
  20.  
  21.     var PI_2 = Math.PI / 2;
  22.  
  23.     var onMouseMove = function ( event ) {
  24.         if ( scope.enabled === false ) return;
  25.  
  26.         var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
  27.         var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
  28.  
  29.         yawObject.rotation.y -= movementX * 0.002;
  30.         pitchObject.rotation.x -= movementY * 0.002;
  31.         pitchObject.rotation.x = Math.max( - PI_2, Math.min( PI_2, pitchObject.rotation.x ) );
  32.     };
  33.  
  34.     var onKeyDown = function ( e ) {
  35.         switch ( e.keyCode ) {
  36.             case 38: // up
  37.             case 87: // w
  38.                 moveForward = true;
  39.                 break;
  40.             case 37: // left
  41.             case 65: // a
  42.                 moveLeft = true;
  43.                                 break;
  44.             case 40: // down
  45.             case 83: // s
  46.                 moveBackward = true;
  47.                 break;
  48.             case 39: // right
  49.             case 68: // d
  50.                 moveRight = true;
  51.                 break;
  52.             case 32: // space
  53.                 if (canJump) velocity.y += 100;
  54.                 canJump = false;
  55.                 break;
  56.         }
  57.     };
  58.     var onKeyUp = function ( e ) {
  59.         switch( e.keyCode ) {
  60.             case 38: // up
  61.             case 87: // w
  62.                 moveForward = false;
  63.                 break;
  64.             case 37: // left
  65.             case 65: // a
  66.                 moveLeft = false;
  67.                 break;
  68.             case 40: // down
  69.             case 83: // a
  70.                 moveBackward = false;
  71.                 break;
  72.             case 39: // right
  73.             case 68: // d
  74.                 moveRight = false;
  75.                 break;
  76.         }
  77.     };
  78.  
  79.     document.addEventListener( 'mousemove', onMouseMove, false );
  80.     document.addEventListener( 'keydown', onKeyDown, false );
  81.     document.addEventListener( 'keyup', onKeyUp, false );
  82.  
  83.     this.enabled = false;
  84.  
  85.     this.getObject = function () { return yawObject; };
  86.  
  87.     this.getDirection = function (targetVec) {
  88.         targetVec.set(0,0,-1);
  89.         quat.multiplyVector3(targetVec);
  90.     }
  91.  
  92.     this.update = function (delta) {
  93.             if ( !scope.enabled ) return;
  94.  
  95.       velocity.x -= velocity.x * 10 * delta;
  96.       velocity.z -= velocity.z * 10 * delta;
  97.       velocity.y -= 9.8 * 20 * delta;
  98.  
  99.       if (moveForward) velocity.z -= 180 * delta;
  100.       if (moveBackward) velocity.z += 180 * delta;
  101.       if (moveLeft) velocity.x -= 180 * delta;
  102.       if (moveRight) velocity.x += 180 * delta
  103.  
  104.       console.log(velocity.z*delta);
  105.  
  106.       player.translateX( velocity.x * delta );
  107.         player.translateY( velocity.y * delta );
  108.       player.translateZ( velocity.z * delta);
  109.  
  110.       // ideally unnecessary
  111.       if ( player.position.y < 10 ) {
  112.             velocity.y = 0;
  113.             player.position.y = 10;
  114.             canJump = true;
  115.       }
  116.  
  117.         };
  118. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement