Probleme mit Kollision
Übersicht

![]() |
BaretBetreff: Probleme mit Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich habe in einigen Versuchsprogrammen schon Kollisionsabfragen ausprobiert. Es hat auch immer funktíoniert aber irgendetwas klappt in meinem Rennspiel nicht! Vielleicht könnt ihr euch den Code mal ansehen. Es kann eigentlich nur an folgendem Code liegen: Die Abfragen: Code: [AUSKLAPPEN] Local kolly=100 Local kollx=10 For u=1 To 7 For i=1 To 11 If car_posx>=kollx And car_posx<=(kollx+71) And car_posy>= kolly And car_posy <= (kolly+71) Then If ImagesCollide(coll,kollx,kolly,0,auto(auto_winkel),car_posx,car_posy,0) Then speed=0 EndIf Goto KollEnde EndIf kollx=kollx+71 Next kollx=10 kolly=kolly+71 Next .KollEnde Zur Erklärung: Dise For...Next "Abfragen" verwende ich weil ich die Bilder in so einer Art Raster angebracht habe. Dieser Raster ist 11 Spalten breit und 7 Zeilen hoch. Ein Bild hat die Maße 71*71 pixel Mit folgender Funktion zeichne ich die Strecke: Code: [AUSKLAPPEN] If Typ=0 Then DrawImage coll,x,y ElseIf Typ=1 Then ;DrawImage kurve_ur,x,y ElseIf typ=2 Then ;DrawImage kurve_lu,x,y ElseIf typ=3 Then ;DrawImage kurve_ro,x,y ElseIf typ=4 Then ;DrawImage kurve_ol,x,y ElseIf typ=5 Then ;DrawImage senk,x,y ElseIf typ=6 Then ;DrawImage zielsenk,x,y startx=x+40 starty=y+40 zieltyp=1 winkel=0 ElseIf typ=7 Then ;DrawImage waag,x,y ElseIf typ=8 Then ;DrawImage zielwaag,x,y startx=x+40 starty=y+40 zieltyp=2 winkel=270 EndIf Was mache ich falsch? Edit: Hab vergessen zu sagen was überhaupt das Problem ist: Das Auto kollidiert die ganze Zeit! Vielen Dank im Voraus! Mfg Baret |
||
![]() |
Ralf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
da ist ein Denkfehler drin: Wenn ich das richtig verstanden habe, setzt Du den Schirm voll mit 71x71 großen Tiles. Ich habe in Deinem Code mal kommentiert was da passiert: BlitzBasic: [AUSKLAPPEN] Local kolly=100 Mache lieber mit Dim ein Array, in Deinem Fall Dim feldinhalt(77). 1 wäre oben links, 2 rechts daneben, usw. für alle Felder bis 77 unten rechts. Dann setzt Du meinetwegen 0 für die Grafik "Coll", 1 für die Grafik "kurve_ur" unsw. für jedes Feld. Das alles machst Du vor dem Hauptprogramm, das hat den Vorteil das Du im Hauptprogramm viel weniger Code hast. Dort brauchst Du nur noch die Position des Autos berechnen, etwa so: Code: [AUSKLAPPEN] position=(car_posy / 71 * 11) -11 + (car_posx / 71)
Dadurch erhältst Du immer einen Wert von 1 bis 77, jenachdem im welchem Feld sich das Auto befindet. Jetzt brauchst Du nur noch abfragen ob feldinhalt(position)=0 ist, und schon weisst Du ob das Auto sich auf der Grafik "coll" befindet. Ist dies der Fall kannst Du die Formel oben wieder umrechnen, um die x+y Kordinaten des Feldes zu ermitteln, oder Du speicherst diese auch für jedes Feld in ein Array. Mit diesen Werten machst Du dann Deine Kollisionsabfrage. Ich hoffe das ist einigermaßen Verständlich rüber gekommen. Ralf |
||
![]() |
Baret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es funktioniert! ![]() VIELEN DANK für deine Hilfe! Mfg Baret |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group