碰撞检测在Arkanoid风格游戏中奇怪地工作

时间:2013-02-14 16:06:36

标签: c# windows-phone-7 xna collision-detection

这是我在arkanoid中碰撞球的代码:

Rectangle intersection = Rectangle.Intersect(block.Rect2D, ball.BallRec);

if (intersection.Width > intersection.Height)
{
    ball.yVel = -ball.yVel;
}
else if (intersection.Width < intersection.Height)
{
    ball.xVel = -ball.xVel;
}
else
{
    ball.xVel = -ball.xVel;
    ball.yVel = -ball.yVel;
}

不幸的是,球有时会“融化”到滑块中并且很奇怪地反弹,特别是当它以更高的速度运动时。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

当检测到碰撞时,仅改变球的方向是不够的,您也需要改变位置。如果球移动20个像素,并且现在是5个像素进入块,那么你需要将球从块移动5个像素。

你还需要检查你正在检测碰撞的区块是在球的旧位置和新位置之间