Контроль столкновения спрайтов
Часто бывает нужно проверить, не произошло ли в нашей игре столкновение двух или более спрайтов. Контроль столкновения между спрайтами не сложнее контроля столкновений между астероидом и кораблем. Эту тему мы обсуждали в четвертой главе. Чтобы выяснить это, достаточно посмотреть, имеются ли общие точки хотя бы у одной из четырех границ спрайта с другой областью. Алгоритм 7.2 исполняет подобный тест.
Алгоритм 7.2. Тест столкновения спрайтов.
// Пусть оба спрайта имеют размер width
к height
и предположим,
// что один из них расположен в координатах (х1,у1), а другой
// в точке (х2,у2)
if (x1>x2 and x1<x2+width and y1>y2 and y1<y2+height)
{
есть столкновение
} else
нет столкновения
}
Алгоритм 7.2 интересен тем, что он выполняет тест, проверяя пересечения. Мы могли бы попробовать оптимизировать его, тестируя обратное утверждение, что объекты не пересекаются. (Часто оказывается легче проверить отсутствие чего-либо, чем наличие... просто это еще одна идея в вашу копилку.)