fix marble getting stuck on corners

This commit is contained in:
RandomityGuy 2023-02-05 19:41:16 +05:30
parent fbed9848ef
commit 34da65ea6d

View file

@ -963,7 +963,7 @@ class Marble extends GameObject {
edgeCollisionTime = 0.0; edgeCollisionTime = 0.0;
// Check if the collision hasn't already happened // Check if the collision hasn't already happened
if (edgeCollisionTime >= 0.0) { if (edgeCollisionTime >= 0.000001) {
// Resolve it and continue // Resolve it and continue
finalT = edgeCollisionTime; finalT = edgeCollisionTime;
currentFinalPos = position.add(relVel.multiply(finalT)); currentFinalPos = position.add(relVel.multiply(finalT));
@ -1315,6 +1315,8 @@ class Marble extends GameObject {
var pos = this.getAbsPos().getPosition(); var pos = this.getAbsPos().getPosition();
this.prevPos = pos.clone(); this.prevPos = pos.clone();
var tdiff = timeStep;
var finalPosData = testMove(velocity, pos, timeStep, _radius, true); // this.getIntersectionTime(timeStep, velocity); var finalPosData = testMove(velocity, pos, timeStep, _radius, true); // this.getIntersectionTime(timeStep, velocity);
if (finalPosData.found) { if (finalPosData.found) {
var diff = timeStep - finalPosData.t; var diff = timeStep - finalPosData.t;
@ -1322,6 +1324,7 @@ class Marble extends GameObject {
this.omega = this.omega.sub(a.multiply(diff)); this.omega = this.omega.sub(a.multiply(diff));
// if (finalPosData.t > 0.00001) // if (finalPosData.t > 0.00001)
timeStep = finalPosData.t; timeStep = finalPosData.t;
tdiff = diff;
} }
var expectedPos = finalPosData.position; var expectedPos = finalPosData.position;
// var newPos = expectedPos; // var newPos = expectedPos;