0
我一直在使用processing.js处理基本的Pong克隆。目前我有一个球可以在两名球员控制的桨之间来回跳动。我的问题是,我检测球和桨的碰撞的算法颠倒了球,但为最右边的桨留下了不切实际的间隙。我使用碰撞检测方法如下:将其全部减少processing.js碰撞检测中对象之间的空间
/*
* 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 here。
我可以调整通过消除ball.mass/2
计算最右边桨paddleBack
值等,这样的碰撞看起来更好缓和值的价值,但我想明白了,为什么计算碰撞上左侧与右侧不同? 预先感谢您。
谢谢你,做正确的问题。我想我错误地认为矩形的x实际上是最左边的时候总是最内层的。 – Christian 2013-03-20 18:48:49
并感谢您向我介绍processing.js。去这里有很多的乐趣:) – Ozzy 2013-03-20 18:54:08
非常欢迎,这是相当漂亮。 – Christian 2013-03-20 19:01:47