Browse Source

Fix for wrong calculation of velocity

The velocity, which is the global cameraDirection variable was
constantly changed. Gravity was added to it over and over again.
This doesn't solve this -
http://www.html5gamedevs.com/topic/17708-collision-issue-with-bounce/ ,
but solves a problem with calculating the correct velocity currently
used.
Raanan Weber 10 years ago
parent
commit
f7b1f90efc
1 changed files with 6 additions and 2 deletions
  1. 6 2
      src/Cameras/babylon.freeCamera.ts

+ 6 - 2
src/Cameras/babylon.freeCamera.ts

@@ -189,12 +189,16 @@
             globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);
             this._collider.radius = this.ellipsoid;
 
+			//no need for clone, as long as gravity is not on.
+			var actualVelocity = velocity;
+			
             //add gravity to the velocity to prevent the dual-collision checking
             if (this.applyGravity) {
-                velocity.addInPlace(this.getScene().gravity);
+				//this prevents mending with cameraDirection, a global variable of the free camera class.
+                actualVelocity = velocity.add(this.getScene().gravity);
             }
 
-            this.getScene().collisionCoordinator.getNewPosition(this._oldPosition, velocity, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);
+            this.getScene().collisionCoordinator.getNewPosition(this._oldPosition, actualVelocity, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);
 
         }