From 64d616863f8c8e713255c72be29cbd11c347064c Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Thu, 13 Mar 2014 00:42:42 -0400 Subject: [PATCH] Made PonterlockControls example frame independent. --- examples/js/controls/PointerLockControls.js | 31 ++++++++++++--------- examples/misc_controls_pointerlock.html | 8 ++---- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/examples/js/controls/PointerLockControls.js b/examples/js/controls/PointerLockControls.js index 983d2415af..21a0bb776a 100644 --- a/examples/js/controls/PointerLockControls.js +++ b/examples/js/controls/PointerLockControls.js @@ -23,6 +23,8 @@ THREE.PointerLockControls = function ( camera ) { var isOnObject = false; var canJump = false; + var prevTime = performance.now(); + var velocity = new THREE.Vector3(); var PI_2 = Math.PI / 2; @@ -65,7 +67,7 @@ THREE.PointerLockControls = function ( camera ) { break; case 32: // space - if ( canJump === true ) velocity.y += 10; + if ( canJump === true ) velocity.y += 350; canJump = false; break; @@ -139,22 +141,23 @@ THREE.PointerLockControls = function ( camera ) { }(); - this.update = function ( delta ) { + this.update = function () { if ( scope.enabled === false ) return; - delta *= 0.1; + var time = performance.now(); + var delta = ( time - prevTime ) / 1000; - velocity.x += ( - velocity.x ) * 0.08 * delta; - velocity.z += ( - velocity.z ) * 0.08 * delta; + velocity.x -= velocity.x * 10.0 * delta; + velocity.z -= velocity.z * 10.0 * delta; - velocity.y -= 0.25 * delta; + velocity.y -= 9.8 * 100.0 * delta; // 100.0 = mass - if ( moveForward ) velocity.z -= 0.12 * delta; - if ( moveBackward ) velocity.z += 0.12 * delta; + if ( moveForward ) velocity.z -= 400.0 * delta; + if ( moveBackward ) velocity.z += 400.0 * delta; - if ( moveLeft ) velocity.x -= 0.12 * delta; - if ( moveRight ) velocity.x += 0.12 * delta; + if ( moveLeft ) velocity.x -= 400.0 * delta; + if ( moveRight ) velocity.x += 400.0 * delta; if ( isOnObject === true ) { @@ -162,9 +165,9 @@ THREE.PointerLockControls = function ( camera ) { } - yawObject.translateX( velocity.x ); - yawObject.translateY( velocity.y ); - yawObject.translateZ( velocity.z ); + yawObject.translateX( velocity.x * delta ); + yawObject.translateY( velocity.y * delta ); + yawObject.translateZ( velocity.z * delta ); if ( yawObject.position.y < 10 ) { @@ -175,6 +178,8 @@ THREE.PointerLockControls = function ( camera ) { } + prevTime = time; + }; }; diff --git a/examples/misc_controls_pointerlock.html b/examples/misc_controls_pointerlock.html index bfa2b17dca..fe029a5f0c 100644 --- a/examples/misc_controls_pointerlock.html +++ b/examples/misc_controls_pointerlock.html @@ -75,7 +75,7 @@ var camera, scene, renderer; var geometry, material, mesh; - var controls,time = Date.now(); + var controls; var objects = []; @@ -279,8 +279,6 @@ requestAnimationFrame( animate ); - // - controls.isOnObject( false ); ray.ray.origin.copy( controls.getObject().position ); @@ -300,12 +298,10 @@ } - controls.update( Date.now() - time ); + controls.update(); renderer.render( scene, camera ); - time = Date.now(); - } -- GitLab