The forums have permanently moved to forum.kirupa.com. This forum will be kept around in read-only mode for archival purposes. To learn how to continue using your existing account on the new forums, check out this thread.

1. 2
posts
Registered User

## Stop mouse paddle passing over ball?

I'm having problems of the mouse controlled paddle being able to appear on the other side of the ball. The paddle's Y movement is controlled by the mouse, but the X is animated on mouseclick at a different frame rate than the ball.

I am rewriting to use a "delta" timer so I thought I would put this out there so I have some more ideas when I get back to it.

So the paddle's y is set by a MouseMove event, the paddle's x is set by a 15ms timer based on a long switch statement based on the png frames:
Code:
switch (this.angle)
{
case 0:
footX = NaN;
break;
case 1:
footX = -24;
break;
case 2:
footX = -23;
break;
case 3:
footX = -21;

etc.
I move the ball like this every 30ms:
Code:
private function move():void
{
ball.x += ball.speedX;
ball.y += ball.speedY;
}
then check for collisions with the paddles (I think I am going to rewrite this to check row x first then hitTestPoint individual paddles)

Code:
footGlobal = team.men[i].localToGlobal(regPoint);
footGlobal.x +=  table.team1.footX;
ballGlobal = ball.localToGlobal(regPoint);
dx = ballGlobal.x - footGlobal.x;
dy = ballGlobal.y - footGlobal.y;
dist = Math.sqrt(dx * dx + dy * dy);

if (dist < minDist)
{
collide(team.men[i], footGlobal, dx, dy);
I then calculate the angle and bounce it off that side. but if the paddle moves too fast it can pass over without colliding. Could anyone help suggest a more accurate method?

Also, is it bad practice to have objects running at different frame rates?

Thanks
Last edited by bugi; June 1st, 2008 at 01:45 PM.

2. 213
posts
Registered User
I thought about this when I was writing my own pong game but never really implemented it, anyway my idea was pretty simple.

Once the ball crossed a certain X (a line very close to where the paddle is), you just perform a check on Y of the paddle and ball do all of your hitTesting that way.

Code:
{
hit()
}
Something like that, I hope I explained this clearly enough and more importantly I hope this works as I haven't done any tests yet!