Kollieson Prüfen von Tile und Ball

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Inkubus

Betreff: Kollieson Prüfen von Tile und Ball

BeitragDo, Aug 18, 2005 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte einen Ball mit einem Tile Koliedieren lassen.

Die überprüfung ob es überlabt habe ich schon mit

Code: [AUSKLAPPEN]
Function OverLap (x0, y0, x1, y1, x2, y2, x3, y3)
   If x0 > x3 Or x1 < x2 Then Return False
    If y0 > y3 Or y1 < y2 Then Return False
    Return True
End Function


gemacht.

Ich möchte rausfinden von welcher seite es Kolliediert.

Mein Versuch

t ist das 16*16 Tile

und x,y sind der cords des 13*13 Balles

Code: [AUSKLAPPEN]
            If Overlap ( t.x*16, t.y*16, t.x*16+16, t.y*16+16, x-13/2, y-13/2, x+13/2, y+13/2 ) Then
               
               Kolie = 0
               
               divx = t.x*16+16 - x - 13/2
               divy = t.y*16+16 - y - 13/2
               
               If divx < 16 Or divx > -16 Then Kolie = 1
               If divy < 16 Or divy > -16 Then Kolie = 2
                  
               If Kolie = 1 Then  Angel = 180 - Angel ; Buffer.Add "Getting X"
               If Kolie = 2 Then  Angel = 360 - Angel ; Buffer.Add "Getting Y"
               
            EndIf


Vielleicht habt ihr ja eine idee.

Gruß Inkubus

Freeman

BeitragDo, Aug 18, 2005 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn du eine tilecollision abfragen möchtest,so prüfe doch einfach die frames,so würd ichs machen

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28
 

Inkubus

BeitragDo, Aug 18, 2005 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja nicht das Problem sondern wie ich rausfinde auf welche seite der Ball angestossen ist !
 

Dreamora

BeitragDo, Aug 18, 2005 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach die Differenz der Positionen überprüfen. Dann siehst du genau wo es ist, bzw aus welcher Richtung "der stoss" kommt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Inkubus

BeitragDo, Aug 18, 2005 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe ich biss jetzt auch raus.
Aber wie bekomme ich es jetzt hin das er Korrekt abprallt ?

Code: [AUSKLAPPEN]

            If Overlap ( t.x*16, t.y*16, t.x*16+16, t.y*16+16, x-13/2, y-13/2, x+13/2, y+13/2 ) Then
               
               Kolie = 0
               
               divx = t.x*16+8 - x
               divy = t.y*16+8 - y
               
               If divx < 0 Then divx = divx - divx * 2
               If divy < 0 Then divy = divy - divy * 2

               If divx > divy Then Kolie = 1
               If divx < divy Then Kolie = 2
               If divx > 13 And divy > 13 Then Kolie = 3
                              
               Buffer.Add "X: "+divx+" Y: "+divy
                  
               If Kolie = 1 Then  Angel = 180 - Angel ; Buffer.Add "Getting X"
               If Kolie = 2 Then  Angel = 360 - Angel ; Buffer.Add "Getting Y"
               If Kolie = 3 Then  Angel = 90 - Angel ; Buffer.Add "Getting XY"

               
            EndIf

Markus2

BeitragFr, Aug 19, 2005 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Ball von Rechts kommt und Links auf eine Wand prallt
oder umgekreht dann ist die Ballbewegungsrichtung X=-X
Oder X=SGN(BallX-WandX)*X
Gillt nur für nen Viereck bzw. bei Wände 0,90,180,270 °
 

Inkubus

BeitragFr, Aug 19, 2005 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie brechne ich dann den neuen Winkel ?

Markus2

BeitragFr, Aug 19, 2005 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Winkel=ATan2(Entfernung X,Entfernung Y)
SpeedX= Sin(Winkel)*Speed
SpeedY= Cos(Winkel)*Speed

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group