Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

#ActualTudor Nita

Posted 20 August 2012 - 06:09 AM

"stupid long mathematical equation"

That doesn't sound good regardless of how much I spin it around in my head.

Anyway, you could just go with some simple conditional statements and inverse the direction of the ball. If you want something more complex you'd have to do some vector maths with at least the ball's direction vector, the paddle's forward vector and the position the ball hit the paddle.


[source lang="cpp"] // edge of playing field if (pong.ball.centre_y > 0.6f) {   pong.ball_velocity_y = -ball_speed; } else if (pong.ball.centre_y < -0.6f) {   pong.ball_velocity_y = ball_speed; } // ball hit a paddle on the right side if (pong.ball_velocity_x > 0 && collides(&pong.ball, &pong.bats[1]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }    // ball hit a paddle on the left side if (pong.ball_velocity_x < 0 && collides(&pong.ball, &pong.bats[0]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }[/source]

#3Tudor Nita

Posted 20 August 2012 - 05:30 AM

"stupid long mathematical equation"

That doesn't sound good regardless of how much I spin it around in my head.

Anyway, you could just go with some simple conditional statements and inverse the direction of the ball. If you want something more complex you'd have to do some "stupid long mathematical equation" with at least the ball's direction vector, the paddle's forward vector and the position the ball hit the paddle.


[source lang="cpp"]    // edge of playing field    if (pong.ball.centre_y > 0.6f)    {      pong.ball_velocity_y = -ball_speed;    } else if (pong.ball.centre_y < -0.6f)    {      pong.ball_velocity_y = ball_speed;    }    // ball hit a paddle on the right side    if (pong.ball_velocity_x > 0 && collides(&pong.ball, &pong.bats[1]) )    {      pong.ball_velocity_x = -pong.ball_velocity_x;    }       // ball hit a paddle on the left side    if (pong.ball_velocity_x < 0 && collides(&pong.ball, &pong.bats[0]) )    {      pong.ball_velocity_x = -pong.ball_velocity_x;    }[/source]

#2Tudor Nita

Posted 20 August 2012 - 05:29 AM

"stupid long mathematical equation"

That doesn't sound good regardless of how much I spin it around in my head.

Anyway, you could just go with some simple conditional statements and inverse the direction of the ball. If you want something more complex you'd have to do some "stupid long mathematical equation" with at least the ball's direction vector, the paddle's forward vector and the position the ball hit the paddle.

[source lang="cpp"]      // edge of playing field     if (pong.ball.centre_y > 0.6f) {   pong.ball_velocity_y = -ball_speed; } else if (pong.ball.centre_y < -0.6f) {   pong.ball_velocity_y = ball_speed; }    // ball hit a paddle on the right side if (pong.ball_velocity_x > 0 && collides(&pong.ball, &pong.bats[1]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }  // ball hit a paddle on the left side if (pong.ball_velocity_x < 0 && collides(&pong.ball, &pong.bats[0]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }[/source]

#1Tudor Nita

Posted 20 August 2012 - 05:28 AM

"stupid long mathematical equation"

That doesn't sound good regardless of how much I spin it around in my head.

Anyway, you could just go with some simple conditional statements and inverse the direction of the ball. If you want something more complex you'd have to do some "stupid long mathematical equation" with at least the ball's direction vector, the paddle's forward vector and the position the ball hit the paddle.

[source lang="cpp"] if (pong.ball.centre_y > 0.6f) {   pong.ball_velocity_y = -ball_speed; } else if (pong.ball.centre_y < -0.6f) {   pong.ball_velocity_y = ball_speed; }   if (pong.ball_velocity_x > 0 && collides(&pong.ball, &pong.bats[1]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }   if (pong.ball_velocity_x < 0 && collides(&pong.ball, &pong.bats[0]) ) {   pong.ball_velocity_x = -pong.ball_velocity_x; }[/source]

PARTNERS