|
image1 = первое проверяемое изображение
x1 = координата x первого изображения y1 = координата y первого изображения image2 = второе проверяемое изображение x2 = координата x второго изображения y2 = координата y второго изображения |
|
Это - очень быстрая и простая команда для обнаружения столкновения, которая позволит Вам определять, действительно ли два изображения наложились друг на друга. Она не принимает во внимание никаких прозрачных пикселей (см. команду ImagesCollide). Как с любой системой проверки на пересечение в Blitz-е, Вы должны будете указать имена переменных двух изображений, и их координаты X и Y в момент проверки столкновения. В большинстве случаев Вам будет достаточно использования этой не слишком точной, но зато быстрой команды проверки на пересечение. В играх, где не требуется пиксельная точность, вполне можно использовать эту команду, чтобы сделать быструю проверку. Это такие игры как, например, Robotron, Defender, Dig Dug и т.п. |
|
; Пример ImagesOverlap
; Установим графический режим Graphics 640,480,16 ; Создадим два рисунка - один с кругом, другой с квадратом gfxBox=CreateImage(50,50) gfxCircle=CreateImage(50,50) ; Рисуем квадрат в первом рисунке ; Для этого выберем буфер этого рисунка SetBuffer ImageBuffer(gfxBox) ; Цвет - синий Color 0,0,255 ;Рисуем квадрат (оставляем пустой пространство шириной 10 пикселов вокруг квадрата) Rect 10,10,30,30,1 ; Будем рисовать круг во втором рисунке SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Тоже оставим пустое пространство вокруг круга Oval 10,10,30,30,1 ; Не забудем переключиться на BackBuffer! SetBuffer BackBuffer() ; Координаты рисунка с квадратом случайные boxX=Rnd(50,610) boxY=Rnd(50,430) ; Повторяем цикл до столкновения Repeat ; Прицепим рисунок с кругом к указателю мыши circleX=MouseX() circleY=MouseY() ; Стандартные команда двойной буферизации: сначала очищаем экран Cls ; Рисуем наши рисунки в их текущих координатах DrawImage gfxBox,boxX,boxY DrawImage gfxCircle,circleX,circleY ; изображение - на экран Flip ; Проверяем столкновение наших рисунков Until ImagesOverlap (gfxBox,boxX,boxY,gfxCircle,circleX,circleY) ; Если столкнулись, выводим сообщение! Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Чтобы увидеть сообщение .. Flip ; Ждем нажатия кнопки мыши WaitMouse() ; Конец программы EndGraphics |