Когда скорость очень высока, мяч проникает в ракетку, чтобы решить эту проблему, я попытался использовать «Пересечение» прямоугольника шара и прямоугольника ракетки, но проникновение все равно происходит. Ниже приводится метод столкновения исходной точки, 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;