Hilfe

ImagesCollide

B2D B+ B3D

Aufruf

wert = ImagesCollide (bild1, x1, y1, frame1, bild2, x2, y2, frame2)

Parameter

bild1 Identität des ersten Bildes (z.B. mit LoadImage ermittelt)
x1 horizontale Position des ersten Bildes
y1 vertikale Position des ersten Bildes
frame1 Animationsframe des ersten Bildes (ab 0)
bild2 Identität des zweiten Bildes
x2 horizontale Position des zweiten Bildes
y2 vertikale Position des zweiten Bildes
frame2 Animationsframe des zweiten Bildes (ab 0)


Rückgabewert

0 = keine Kollision
1 = Kollision


Beschreibung

Diese Funktion prüft zwei Bilder auf pixelgenaue Kollision. Dies ist besonders für Objekte mit transparenter Farbe gut geeignet. Das Prüfen geschieht pixelgenau, aber mit einer relativ langsamen Geschwindigkeit. Ist eine so hohe Genauigkeit nicht notwendig, so sollte besser ImageRectOverlap oder ImagesOverlap verwendet werden. Benutze MaskImage, um eine transparente Farbe auszuwählen!

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


Unter modernen Grafikkarten funktioniert der Befehl teilweise nicht mehr und es kann zu Abstürzen kommen. Daher wird eine Verwendung für Programme, die man weitergeben möchte, nicht empfohlen.


Beispiel

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

Graphics 640, 480, 16
gfxBox = CreateImage(50, 50)
gfxCircle = CreateImage(50, 50)
SetBuffer ImageBuffer(gfxBox)
Color 0, 0, 255
Rect 10, 10, 30, 30, 1
SetBuffer ImageBuffer(gfxCircle)
Color 255, 0, 0
Oval 10, 10, 30, 30, 1
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, "Kollision! Maustaste drücken"
Flip
WaitMouse()
EndGraphics


Siehe auch

ImageRectCollide, ImageRectOverlap, ImagesOverlap, RectsOverlap

Übersicht 2D Grafik Bilder