当速度很高的时候,球会穿透桨,为了解决这个问题,我尝试用'交'球-矩形和桨-矩形,但还是会穿透。以下是原点碰撞的方法,b是球,p是桨。另外,我试着设置如果球没有撞到上、左、右、下或桨2,那么它一定会撞到桨1。结果是我们无法定义球飞行时的状态。
有谁知道如何解决这个问题?
有谁知道如何解决这个问题?
private bool CollisionOccurred()
{
// assume no collision
bool retval = false;
// heading towards player one
if (m_ball.DX < 0)
{
Rectangle b = m_ball.Rect;
Rectangle p = m_paddle1.Rect;
retval =
b.Left < p.Right &&
b.Right > p.Left &&
b.Top < p.Bottom &&
b.Bottom > p.Top;
}
// heading towards player two
else // m_ball.DX > 0
{
Rectangle b = m_ball.Rect;
Rectangle p = m_paddle2.Rect;
retval =
b.Left < p.Right &&
b.Right > p.Left &&
b.Top < p.Bottom &&
b.Bottom > p.Top;
}
return retval;
尝试添加速度的球(像一个保证金)为您的矩形的每个边。
retval = b.Left - b.velocity.X < p.Right &&b.Right+ b.velocity.X > p.Left &&b.Top- b.velocity.Y < p.Bottom &&b.Bottom+ b.velocity.Y > p.Top;