Collision Detection in einem 2D Sandbox Game.

GentleXD

Aktives Mitglied
Schönen guten Abend,

ich sitzte mal wieder an einem Spiel. An einem 2D Sandbox Game. Nun programmiere ich gerade den Spieler, und ich programmiere seine Collision Detection mit der Welt. Alle Blöcke der Welt sind in einem zweidimensionalen Array gespeichert. Also alle haben eine x und eine Y Koordinate und wenn sie gerendert werden werden einfach diese X und Y Positionen mit 16 multipliziert. Also ist der Block an Array Position 0,0 in der World an der Position 0,0 und der Block im Array mit 1,1 ist dann in der World an den X und Y Koordinaten 16, 16 usw.
Nun habe ich diese für die Collision Detection immer in "Chunks" aufgeteilt und dann bin ich alle Blöcke dieses Chunks durchgegangen indem der Spieler gerade steht und have auf Collisions Abfragen geprüft ich wollte mal fragen ob es nicht einen einfachere Metjode gibt in der man dierekt mit Side Up und Down Offsets arbeitet und dann direkt die Blöck um den Spieler herum bekommt (Der Spieler ist 4 Blöcke hoch circa und 3.5 Blöcke breit) ?

Danke schonmal im Vorraus,

GentleXD
 
Wenn du aus der Spielerposition die in Frage kommenden Blöcke direkt ableiten willst, ohne über alle registrierten zu iterieren, musst du eine Baumstruktur benutzen. Aber da dein 2-Dimensionales Array so direkt mit den Positionen der Elemente in der Spielwelt zusammenhängt, ist das eigentlich der Beste Weg. Die Baumstruktur ist höchstwahrscheinlich langsamer als dein Array.

Wenn du einfach nur die Blöcke möchtest kannst du ja die Elemente aus dem Array nehmen, die sich auf den Bereich um den Spieler beziehen. Sollte ja mit einer Index-Berechnung so machbar sein, oder nicht?
 

Zurück
Oben