Feb 212013
 

Da wir nun alle ein grundlegendes Verständnis von Kollisionen haben, können wir damit beginnen, diese in unser Spiel zu implementieren. In den nächsten Lektionen werden wir einige der angesprochenen Methoden genauer diskutieren. Da dies aber zum Einstieg in die Programmierung dient, werden wir keine komplexen Systeme behandeln. Dies werden wir gegebenenfalls zu einem späteren Zeitpunkt tun.

Begrenzungsrechtecke

In der vorhergehenden Lektion haben wir umhüllende Konturen kennengelernt, welche zur Kollisionserkennung benutzt werden. Für unseren Roboter werden wir vier umhüllende Rechtecke benutzen, wie an der Grafik unten zu sehen ist.

Heute werden wir nur die vertikalen Kollisionen behandeln und dabei werden wir uns nur mit dem gelben und dem orangen Rechteck beschäftigen.

1

Java besitzt schon eine implementierte Klasse, welche mit Rechtecken arbeiten kann, daher werden wir diese importieren. Wir werden die oben gezeigten Rechtecke darauf überprüfen, ob sie mit den in Lektion 3 gezeichneten Feldern kollidieren.

Kollisionserkennung ist eigentlich nur die Überprüfung, ob sich zwei Objekte überlappen oder eben nicht. Des Weiteren wird die Position eines der beiden Objekte angepasst auf einen Punkt, wo es keine Überlappung mehr gibt. Und dies sollte geschehen, bevor das Spiel etwas Falsches darstellt.

Und wie zeichnen wir nun das gelbe und das orange Rechteck?

In unserer Roboter Klasse müssen wir die folgenden Variablen hinzufügen:

Damit erzeugen wir zwei Objekte, hier Rechtecke, mit den Namen rect und rect2. Dazu nutzen wir (X, Y, Breite und Höhe) und wir müssen noch Rectangles (Rechtecke) importieren, am einfachsten mit STRG + Shift + O.

Als Nächstes gehen wir in die update()-Methode und fügen zwei Zeilen hinzu, welche bewirken, dass die Rechtecke beim Bewegen des Roboters immer wieder neu gezeichnet werden.

Am Anfang ist es sinnvoller, die Rechtecke zeichnen zu lassen, damit wir uns alles vorstellen können. Daher gehen wir nun in die StartingClass Klasse und ändern die paint()-Methode wie folgt.

Damit haben wir diesen Stand:

2

Es kann sein, dass bei einigen von euch Fehler auftreten und ihr daher das Spiel nicht starten könnt. Einer kann in der Robot Klasse sein, hier ist noch ein Getter and Setter vom Ground vorhanden. Den können wir einfach löschen. Ein Weiterer könnte in der StartingClass Klasse sein. Hier nutzen wir einfach die Hilfe von Eclipse und das Problem ist gelöst. Damit müsste jeder das Beispiel sehen.

Kollisionserkennung

Nun, da wir diese beiden Rechtecke gezeichnet haben, müssen wir überprüfen, ob sie mit den von uns gezeichneten Feldern kollidieren. Dazu öffnen wir die Tile Klasse.

Wie bei unserem Roboter müssen unsere gezeichneten Felder auch ein Rechteck bekommen. Dies ist recht einfach. Dazu müssen wir nur ein Rechteck im Tile Konstrukteur zeichnen lassen und in der update()-Methode immer wieder neu anpassen.

1. Wir erstellen eine neue Variable. Das r repräsentiert die Grenzen unseres Rechtecks. Wenn wir nun ein neues Feld erstellen, wird diesem automatisch ein Rechteck zugewiesen.

2. Danach müssen wir eine neue Methode erstellen, welche nach Kollisionen Ausschau hält. Daher werden wir am Ende der Klasse die folgenden Methode erstellen, welche einfach zwei Rechtecke nimmt und ein entsprechende Reaktion ausgibt.

3. Nun müssen wir diese noch in der update()-Methode aufrufen und wir müssen die Rechtecke immer wieder neu anpassen.

4. Als Letztes müssen wir noch sichergehen, dass unser Roboter nicht mit den leeren Feldern kollidiert. Um dies zu erreichen, müssen wir eine kleine Anpassung am Konstrukteur vornehmen.

Damit haben wir schon alle vertikalen Kollisionen unseres Roboters programmiert. Da das Ganze in den nächsten Lektionen noch ein bisschen komplexer wird, kümmern wir uns um eventuelle Fehler später .

Wenn ihr nun das Spiel startet und mit dem Roboter umher lauft, gibt eure Konsole aus, ob es unten und oder oben zu Kollisionen kommt. Mehr haben wir auch noch nicht programmiert. In der nächsten Lektion machen wir hier weiter.

Es gibt diesmal keinen Code, da wir mit der Kollisionserkennung noch nicht fertig sind.

Falls ihr Fragen habt, immer raus damit, ich helfe euch sehr gerne. Hinterlasst bitte einfach einen Kommentar.

Teilt diese Seite mit euren Freunden und besucht uns mal auf Facebook und auf Google+, das würde dieser Seite wirklich weiterhelfen, danke sehr. Auch ein Klick auf die Werbung hilft dabei, diese Seite am Laufen zu halten.

Quelle: Original Anleitung auf englisch von Kilobolt Studios

Lektion 4 – Kollisionserkennung Grundlagen Lektion 6 – Kollisionserkennung Teil 2