私はprocessing.jsを使用して基本的なPongクローンに取り組んできました。現在、私は2人のプレーヤーが制御するパドル間で前後にバウンドできるボールを持っています。私の問題は、ボールとパドルの間の衝突を検出するための私のアルゴリズムがボールを反転させますが、右端のパドルに非現実的なギャップを残すことです。私が衝突検出に使用している方法は次のとおりです。
/*
* Collision detection
*/
void Collide(PongBall ball, Paddle pPaddle)
{
float paddleX = pPaddle.x;
if(ball.directionX == -1)
{
//moving backwards
float paddleFront = pPaddle.x + pPaddle.width + ball.mass/2;
float paddleBack = pPaddle.x;
if( (ball.x <= paddleFront && ball.x >= paddleBack)
&& (ball.y >= pPaddle.y - pPaddle.height - ball.mass)
&& (ball.y <= pPaddle.y + pPaddle.height + ball.mass))
{
//contact with paddle
debugger;
ball.velocity.x *= -1;
ball.directionX *= -1;
}
}
else if(ball.directionX == 1)
{
//moving forwards
float paddleFront = pPaddle.x - pPaddle.width - ball.mass/2;
float paddleBack = pPaddle.x;
if( (ball.x >= paddleFront && ball.x <= paddleBack)
&& (ball.y >= pPaddle.y - pPaddle.height - ball.mass)
&& (ball.y <= pPaddle.y +pPaddle.height + ball.mass))
{
debugger;
ball.velocity.x *= -1;
ball.directionX *= -1;
}
}
}
コード/例全体は、ここのjsfiddleにあります。
paddleBack
右端のパドルの値を計算するための値を削除するball.mass/2
などして値を調整し、衝突が見栄えが良くなるようにすることができますが、左側の衝突の計算がそれと異なるのはなぜですか?右側に?前もって感謝します。