Программирование игр для Windows. Советы профессионала

       

Контроль столкновения спрайтов


Часто бывает нужно проверить, не произошло ли в нашей игре столкновение двух или более спрайтов. Контроль столкновения между спрайтами не сложнее контроля столкновений между астероидом и кораблем. Эту тему мы обсуждали в четвертой главе. Чтобы выяснить это, достаточно посмотреть, имеются ли общие точки хотя бы у одной из четырех границ спрайта с другой областью. Алгоритм 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 интересен тем, что он выполняет тест, проверяя пересечения. Мы могли бы попробовать оптимизировать его, тестируя обратное утверждение, что объекты не пересекаются. (Часто оказывается легче проверить отсутствие чего-либо, чем наличие... просто это еще одна идея в вашу копилку.)



Содержание раздела