Остерегайтесь призраков тоже. И под этим я подразумеваю, что скорость мяча может быть достаточно большой, чтобы не было никакого кадра (или обновления рутинного вызова), в котором мяч фактически пересекается с битой, поэтому вы не сможете обнаружить столкновение. Смотрите мою иллюстрацию. В нем мяч в двух разных кадрах пересекался с битой, хотя прямого пересечения не было. Результатом этого будет то, что мяч прошел «через» летучую мышь и волшебным образом появился на другой стороне.
Чтобы решить эту проблему, вы не можете использовать положение шара, чтобы вычислить, было ли пересечение, вам нужно вычислить разницу между старым и новым положением шара в каждом кадре и посмотреть, пересекалась ли эта линия (разница). с битой в любой точке.
Самый простой способ решить эту проблему - рассмотреть летучую мышь как горизонтальную линию, тогда вы можете выполнить простую проверку пересечения линии с линией. Если они пересекаются, произошло столкновение. Более сложным способом было бы сделать пересечение линии / вектора-прямоугольника. Преимущество этого состоит в том, что вы также сможете обнаруживать столкновения с углами, которые являются важной частью игры в понг / прорыв.