| image1 = первое проверяемое изображение x1 = координата x первого изображения y1 = координата y первого изображения frame1 - номер кадра первого изображения (не обязательно) image2 = второе проверяемое изображение x2 = координата x второго изображения y2 = координата y второго изображения frame2 - номер кадра второго изображения (не обязательно) |
| Эта команда похожа на ImagesOverlap, но проверяет столкновения с точностью до пикселя. При проверке не учитываются прозрачные пиксели, поэтому точность очень высокая. Но команда ImagesOverlap работает намного быстрее. В остальном они похожи. |
| ; Пример ImagesCollide ; Установим графический режим 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 ImagesCollide (gfxBox,boxX,boxY,0,gfxCircle,circleX,circleY,0) ; Если столкнулись, выводим сообщение! Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Чтобы увидеть сообщение .. Flip ; Ждем нажатия кнопки мыши WaitMouse() ; Конец программы EndGraphics |