diff --git a/src/collision.c b/src/collision.c index a5c32b1..c020955 100644 --- a/src/collision.c +++ b/src/collision.c @@ -19,27 +19,51 @@ void checkCollision(){ if (fabsf(en1->position.x - en2->position.x) < (en1->size * 0.5f + en2->size * 0.5f) && fabsf(en1->position.y - en2->position.y) < (en1->size * 0.5f + en2->size * 0.5f)) { - float forcex=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.x)+(scale*1.5))+((en2->velocity.x)+(scale*1.5)))/2)+((en1->force.x+en2->force.x)/2))*(scale); - float forcey=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.y)+(scale*1.5))+((en2->velocity.y)+(scale*1.5)))/2))*(scale); + float forcex=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.x)+(scale*.5))+((en2->velocity.x)+(scale*.5)))/2)+((en1->force.x+en2->force.x)/2))*(scale); + float forcey=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.y)+(scale*.5))+((en2->velocity.y)+(scale*.5)))/2))*(scale); if(en1->position.x < en2->position.x){ - ApplyForce( - en1, - (Vector2){-forcex, -forcey} - ); - ApplyForce( - en2, - (Vector2){forcex, forcey} - ); + if(en1->position.y < en2->position.y){ + ApplyForce( + en1, + (Vector2){-forcex, -forcey} + ); + ApplyForce( + en2, + (Vector2){forcex, forcey} + ); + } + else{ + ApplyForce( + en1, + (Vector2){-forcex, forcey} + ); + ApplyForce( + en2, + (Vector2){forcex, -forcey} + ); + } } else{ - ApplyForce( - en1, - (Vector2){forcex, -forcey} - ); - ApplyForce( - en2, - (Vector2){-forcex, forcey} - ); + if(en1->position.y < en2->position.y){ + ApplyForce( + en1, + (Vector2){forcex, -forcey} + ); + ApplyForce( + en2, + (Vector2){-forcex, forcey} + ); + } + else{ + ApplyForce( + en1, + (Vector2){forcex, forcey} + ); + ApplyForce( + en2, + (Vector2){-forcex, -forcey} + ); + } } } } diff --git a/wrldboxMacOS b/wrldboxMacOS index 39673c4..e6f51bf 100755 Binary files a/wrldboxMacOS and b/wrldboxMacOS differ