< BlitzBasic-Community-Tutorial
Kollisionen sind von Nöten, wenn z.B. ein Raumschiff gegen einen Asteroiden prallen und dann explodieren soll.
Hier der Code:
If ImagesCollide(bild1, x, y, rahmen, bild2, x, y, rahmen) Then /aktion\
oder
If ImagesOverlap(bild1, x, y, rahmen, bild2, x, y, rhamen) Then /aktion\
Man beachte hierbei, dass für rahmen eine 1 für ja steht und eine 0 für nein. Und der Unterschied zwischen Collide und Overlap ist folgender: Collide ist pixelgenaue Kollision und Overlap ist einfache Kollision.
Also hier ein Beispiel:
Graphics 800, 600
SetBuffer BackBuffer()
variable = LoadImage("Bildpfad")
variable2 = LoadImage("Bildpfad")
Repeat
Cls
DrawImage variable, MouseX(), MouseY()
DrawImage variable2, x, y
If ImagesCollide(variable, MouseX(), MouseY(), 0, variable2, x, y, 0) Then
Print "Kollision!!!"
Endif
Flip
Until KeyHit(1)
End
Hier ein kleines Beipiel mit .bmp-Bildern (geht auch mit Demo): Collidedemo.zip
So, das war's schon fast. Aber was ist, wenn wir jetzt ein Rechteck mit einem Bild kollidieren lassen wollen?
Ganz einfach:
If ImageRectCollide(bild, x, y, 0, rechteck, x, y, breite, höhe) Then /aktion\
oder
If ImageRectOverlap(bild, x, y, 0, rechteck, x, y, breite, höhe) Then /aktion\
Hierzu noch ein Beispiel:
Graphics 800, 600
SetBuffer BackBuffer()
variable = LoadImage("Bildpfad")
Repeat
Cls
DrawImage variable, MouseX(), MouseY()
DrawImage variable2, x, y
If ImageRectCollide(variable, MouseX(), MouseY(), 0, rechteck, x, y, breite, höhe) Then
Print "Kollision!!!"
Flip
Until KeyHit(1)
End
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.