Hilfe

ImageRectOverlap

B2D B+ B3D

Aufruf

wert = ImageRectOverlap (bild, x, y, 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
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 überlappt. Die transparente Farbe wird nicht berücksichtigt. Dadurch ist dieser Befehl relativ ungenau, dafür aber sehr schnell. Eigentlich ist dies eine Vereinfachung einer If-Then-Prüfung. Um genauere Kollision zu ermitteln, ist der Befehl ImageRectCollide besser. Für die Kollision zwischen zwei Bildern, ist der Befehl ImagesCollide notwendig.

Diese Grafik zeigt eine etwas ungenaue Kollision, die mit dieser Funktion ermittelt werden kann:


Beispiel

Dieses Programm zeichnet einen Kreis. Wenn dieser Kreis einen rechteckigen Bereich berührt, dann wird das Programm gestoppt:

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 ImageRectOverlap (gfxCircle, circleX, circleY, 0, hotX, hotY, hotW, hotH)
Text 0, 0, "Kollision! Maustaste drücken"
Flip
WaitMouse()
EndGraphics


Siehe auch

ImageRectCollide, ImagesCollide, ImagesOverlap, RectsOverlap

Übersicht 2D Grafik Bilder