Hilfe

ImageRectCollide

B2D B+ B3D

Aufruf

wert = ImageRectCollide (bild, x, y, frame, start_x, start_y, breite, höhe)

Parameter

bild Identität des Bildes (z.B. mit LoadImage ermittelt)
x horizontale Position des Bildes
y vertikale Position des Bildes
frame Animationsframe des Bildes (ab 0)
start_x horizontale Startkoordinate des rechteckigen Bereichs
start_y vertikale Startkoordinate des rechteckigen Bereichs
breite Breite des rechteckigen Bereichs
höhe Höhe des rechteckigen Bereichs


Rückgabewert

0 = keine Kollision
1 = Kollision


Beschreibung

Diese Funktion überprüft, ob ein Bild einen rechteckigen Bereich berührt oder überlappt. Dies ist besonders für Objekte mit transparenter Farbe gut geeignet. Die Prüfung geschieht pixelgenau - daher etwas langsamer als ImageRectOverlap. Um die Kollision zwischen zwei Bilder zu prüfen, ist der Befehl ImagesCollide besser. Benutze MaskImage, um eine transparente Farbe auszuwählen!

Diese Grafik zeigt eine saubere, pixelgenaue Kollision, die mit dieser Funktion ermittelt werden kann:


Beispiel

Standardbeispiel:

Graphics 640, 480, 0, 1
gfxCircle = CreateImage(50, 50)
SetBuffer ImageBuffer(gfxCircle)
Color 255, 0, 0
Oval 10, 10, 30, 30, 1
SetBuffer BackBuffer()
Color 0, 0, 255
hotX = Rnd(50,610)
hotY = Rnd(50,430)
hotW = Rnd(20,100)
hotH = Rnd(20,100)
Repeat
   circleX = MouseX()
   circleY = MouseY()
   Cls
   Rect hotX, hotY, hotW, hotH, 0
   DrawImage gfxCircle, circleX, circleY
   Flip
Until ImageRectCollide (gfxCircle, circleX, circleY, 0, hotX, hotY, hotW, hotH)
Text 0, 0, "Kollision! Maustaste drücken"
Flip
WaitMouse()
EndGraphics


Siehe auch

ImageRectOverlap, ImagesCollide, ImagesOverlap, RectsOverlap

Übersicht 2D Grafik Bilder