Code Erlaeuterung

B

ByeBye 8492

Was bewirkt dieser Code:
Code:
Function COLLIDE(XPOSITION1 As Integer, YPOSITION1 As Integer, XPOSITION2 As Integer, YPOSITION2 As Integer, BOXSIZE As Integer) As Integer
     If XPOSITION1 > XPOSITION2 - (BOXSIZE / 2) Then
          If XPOSITION1 < XPOSITION2 + (BOXSIZE / 2) Then
               If YPOSITION1 > YPOSITION2 - (BOXSIZE / 2) Then
                    If YPOSITION1 < YPOSITION2 + (BOXSIZE / 2) Then
                         COLLIDE = 1
                    End If
               End If
          End If
     End If
End Function
Muss erklaeren weiss allerdings nicht was das ist, wie das sein soll.
 
Sieht nach ner Kollisionsabfrage zweier Objekte aus...
Du überprüfst die X & Y Koords, dabei rechnest du die halbe Länge der Objekte dazu. Wenn X1 größer ist als X2-Objektbreite/2 und kleiner ist als X2+Objektbreite/2, sind die beide Objekte verbunden, wenn dies auch für ihre Y-Koords gilt.

Hoffe du hast verstanden was ich dir erklären wollte. Wenn nicht, frag halt nochma :)

mfg Grimreaper
 
Original geschrieben von Grimreaper
Sieht nach ner Kollisionsabfrage zweier Objekte aus...
Du überprüfst die X & Y Koords, dabei rechnest du die halbe Länge der Objekte dazu. Wenn X1 größer ist als X2-Objektbreite/2 und kleiner ist als X2+Objektbreite/2, sind die beide Objekte verbunden, wenn dies auch für ihre Y-Koords gilt.

Hoffe du hast verstanden was ich dir erklären wollte. Wenn nicht, frag halt nochma :)

mfg Grimreaper

Bitte nochmal.
 
Grob gesagt: Da wird nur überprüft, ob zwei Punkte, Kugeln, Planeten, Kreise, Atomraketen, Flugzeuge, Handies, keine Ahnung was mit einander zusammenstossen.
Auch wenn man das deutlich einfacher aufbauen könnte. ;)
 
@Asphyxia
Nicht ganz korrekt :). Die Objekte müssen auf jeden Fall rechteckig oder quadratisch sein, damit die Kollisionsabfrage stimmt. Bei Kreisen müsste man den Abstand so überprüfen:
d = sqr(x^2+y^2)
If d < (radius * 2) Then Collision = 1

@muffinmampfer
was is daran so schwierig?
If XPOSITION1 > XPOSITION2 - (BOXSIZE / 2) Then
'wenn die x-Koord von Box1 größer ist als die x-Koord von Box2 abzüglich seiner Breite und

If XPOSITION1 < XPOSITION2 + (BOXSIZE / 2) Then
'seine x-Koord kleiner ist als x-Koord von Box2 plus dessen Breite (wenn x1 also zwischen x2 + Boxsize/2 und x2-Boxsize/2, also innerhalb Box2 liegt), dann kann das Objekt entweder über / unter dem anderen liegen, oder ihn schneiden. Um den genauen Fall festzustellen dient die zweite analoge Abfrage mit den y-Koords...

mfg Grimreaper
 
Thx fuer die Antworten, wie koennte man die Sache einfacher aufbauen?
 

Neue Beiträge

Zurück