Kollieson Prüfen von Tile und Ball
Übersicht

InkubusBetreff: Kollieson Prüfen von Tile und Ball |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist ja nicht das Problem sondern wie ich rausfinde auf welche seite der Ball angestossen ist ! | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und wie brechne ich dann den neuen Winkel ? | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Winkel=ATan2(Entfernung X,Entfernung Y)
SpeedX= Sin(Winkel)*Speed SpeedY= Cos(Winkel)*Speed |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group