Ich habe angefangen ein Jump and Run Spiel mit der Allegro libary zu schreiben.
Bei jedem gutem Jump and Run sind natürlich kollision vorhanden. Bisher arbeite ich mit einer einfachen, aber umständlichen und leistungsfressende variante.
Er prüft nach jeden schritt, ob eine kollision vorhanden ist, auch wenn er meilen weit davon entfernt ist. Das sieht wie folgt aus:
Code:
x1= x von der Figur y1= y von der Figur x2= x von dem Stein y2= y von dem Stein int BildKollision(BITMAP* Figur,int x1, int y1, BITMAP* stein,int x2, int y2) { if(x1>=(x2+stein->w) || y1>=(y2+stein->h) || x2>=(x1+Figur->w) || y2>=(y1+Figur->h)) return 0; else return -1; }
Nun wollte ich fragen, ob es eine bessere Variante gibt, um zu prüfen ob eine Kollision stattfindet. Aus einem Forum hab ich gelesen, dass man mit einem int array eine Map schreibt mit 0,1. Heisst 0 = nichts, 1= Stein.
Das würde dann so aussehen
( 1,0,0,0,0,1
1,0,0,0,1,1
1,0,0,1,1,1
1,1,1,1,1,1)
Wenn einer damit erfahrung hat, oder selbst schonmal ein Plattform game geschrieben hat, würde ich mich freuen, wenn er ein kleines beispiel hier reinschreibt.
Wenn es noch andere Varianten der kollision gibt, lasst es mich bitte wissen.
Mfg Proace