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 năm trước cách đây
mục cha
commit
f7b1f90efc
1 tập tin đã thay đổi với 6 bổ sung2 xóa
  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);
 
         }