Libgdx Collision detection mit transparentem rectangle?

... komplette Frage anzeigen

1 Antwort

Es ist wichtig, dass du die Logik und die View voneinander trennst.

Das heißt, du wirst keine Collision detection zwischen einem Sprite und einem Rectangle machen, sondern du wirst eine Collision detection zwischen zwei Objekten machen und den Sprite/das Rectangle abhängig vom Ergebnis zeichnen.

Das heißt jedes Objekt sollte ein Datenmodell haben, welches Position und Größe speichert. In der "render" Mthode machst du zunächst einen Durchlauf, in welchem du die Positionen aktualisierst. Dabei berechnest du anhand der Geschwindigkeit des Objektes die neue Position und kontrollierst, ob diese gültig (also Frei ist und auf dem Weg keine Kollision stattgefunden hat) ist.

Falls sie gültig ist, setzt du die neue Position des Objektes, falls nicht, musst du die letzte gültige Position berechnen.

Anschließend machst du den wirklichen render-Durchlauf, in welchem du die Objekte, abhängig von der neuen Position und Größe zeichnest.

Es ist also völlig egal, ob es ein transparentes Rectangle oder ein Sprite ist. Die Collision detection MUSS unabhängig von der View sein. Die View hingegen sollte sich auf das Ergebnis der Collision detection stützen und somit an der richtigen Position rendern.

LG

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gut4fr5g4
08.11.2016, 14:39

danke!

Kannst du das nochmal an einem beispiel zeigen? habs nicht so ganz verstanden :c 

0

Was möchtest Du wissen?