diff --git a/breakout.c b/breakout.c index 61d9acb..a17341e 100644 --- a/breakout.c +++ b/breakout.c @@ -457,11 +457,11 @@ void BALL_MoveAwayFromBoundaries(Ball * obj){ bool BALL_CollideWithPaddle(Ball * obj, Paddle * paddle){ if (RECT_Collide(&(obj->TargetRect), &(paddle->TargetRect))) { Vector ballCenter = BALL_GetCenter(obj); - if (ballCenter.y > (paddle->TargetRect).y) // if the ball hits the paddle from the sides (or the bottom (?)) - BALL_CollideWithRect(obj, &(paddle->TargetRect)); + if ((ballCenter.x) > ((paddle->TargetRect).x) || (ballCenter.x) < ((paddle->TargetRect).x + (paddle->TargetRect).w)) // if the ball hits the paddle from the sides (or the bottom (?)) + BALL_SteerMomentum(obj, paddle); // Sets it to unit vector! else - BALL_SteerMomentum(obj, paddle); // Sets it to unit vector! - // Following assumes that the paddle position was udated before the ball was updated + BALL_CollideWithRect(obj, &(paddle->TargetRect)); + // Following assumes that the paddle position was udated before the ball was updated while (RECT_Collide(&(obj->TargetRect), &(paddle->TargetRect))) { // Move away from rect in small steps (obj->Location) = VECTOR_Add((obj->Location), (obj->Momentum)); BALL_MoveAwayFromBoundaries(obj);