2D-Kollision

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

sprime

Betreff: 2D-Kollision

BeitragSo, Okt 04, 2009 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöle..
Ich habe eine Frage..

Die kollisionen mit den einzelnen tiles funktioniert nicht.. ich habe im moment 2 verschiedene tilearten in meiner map drinne und habe die so eingestellt:

Code: [AUSKLAPPEN]
For y = 0 To 15
      For x = 0 To 37
         
         
         If map(x,y) = 1 Then
         DrawImage kartg, x*32, y*32
      
      
      ElseIf map(x,y) = 2 Then
      DrawImage kartd, x*32, y*32
      
      EndIf
      Next
   Next




der kollidiert mit map(x,y) = 1 gut, egal von welcher seite der spieler kommt, er stößt gegen... bei map(x,y) = 2 also beim anderen tile springt er einfach durch.. ich weiß nicht wieso.. es hat genau die gleiche größe etc.. Was kann ich machen

ToeB

BeitragSo, Okt 04, 2009 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ja dann schik uns doch mal den code wo die Kollision erkannt wird ^^

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Hubsi

BeitragSo, Okt 04, 2009 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code zeigt nur wie Du es zeichnest, von der Kollision sieht man jetzt nichts Very Happy Als Tip in anderer Sache noch: Lade das Tileset in ein Array, sonst wirst Du noch die höchsten Probleme bekommen wenn die Anzahl der verschiedenen Tiles die 5 erstmal überschreitet.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

sprime

BeitragSo, Okt 04, 2009 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnt ihr hiermit was anfangen ?? Das macht die kollision:


Code: [AUSKLAPPEN]
   
   If jump = True Then
      Player_temp_y = Player_temp_y -1   
      Player_pos_y = Player_pos_y - Player_temp_y
   
                                                                          
      If Player_temp_y =< 0 Then   ; Sobald Temp_y den Wert 0 erreicht hat
         If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1 Then   
             ;überprüft, ob sich ein Tile unter dem Spieler befindet
            jump = 0
            temp = Player_pos_y /32   ;\
            Player_pos_y = temp *32   
         EndIf
      EndIf
    EndIf
   
   ;Schwerkraft
   If jump = False  Then
      If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=0 Then   ; Sollte kein Tile unter dem Spieler sein
         jump = True       
         Player_temp_y = 0   
      EndIf
   EndIf




bzw falls er von unten, oben gegenspringt :
Code: [AUSKLAPPEN]
If map((Player_pos_x +16) /32,Player_pos_y /32)=1 And jump = True Then
      jump = False
      Player_pos_y = Player_pos_y +2   
   EndIf

Hubsi

BeitragSo, Okt 04, 2009 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1


Hier wird nur auf Tilenummer 1 überprüft, entsprechend wird er auch nur auf diesem laufen können. Ein >=1 wird Dein Problem beheben. Zudem solltest Du die Kollisionsprüfung nicht von jump abhängig machen. Gibt möglicherweise Probleme in späteren Stadien wenn Du den Gedanken mal weiterverfolgst.
Wenn player_temp_y kleiner 0 ist (die Prüfung vor der Kollisionsprüfung) springt das Männicken nach oben, eine Prüfung nach unten macht da jetzt finde ich nicht sehr viel Sinn?

Soweitmal meine Gedanken zum Code.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group