EOS 2  1.1.0
Einfache Objektbasierte Sprache
Öffentliche Methoden | Aufstellung aller Elemente
de.lathanda.eos.game.geom.CollisionDetection Klassenreferenz

Kollisionserkennung. Mehr ...

Öffentliche Methoden

 CollisionDetection (Game game)
 
void addObject (Sprite sprite)
 
void removeObject (Sprite sprite)
 
void checkCollision ()
 

Ausführliche Beschreibung

Kollisionserkennung.

Diese Klasse ist nicht gegen parallele Zugriffe gesichert (nicht Threadsafe), daher benötigt jeder Thread sein eigenes Objekt.

Objekte dieser Klasse sind in der Lage zweidimensionale Kollisionen effizient zu berechnen. Hierzu wird die Kollision in mehreren Phasen berechnen.

Zuerst werden Überlappungen über umgebende Rechtecke angenähert.

Danach werden potenielle Kollisionen einzeln überprüft.

Details:

Es wird eine Liste der x Intervalle der Rechtecke erzeugt. 1.x0, 1.x1, 2.x0, 3.x0, 2.x1, 3.x1, 4.x0, 4.x1 Hier überlappen Intervall 2 und 3. Daher kann hier eine Kollision vorliegen. Nun werden die y Grenzen des Kandiaten geprüft. Besteht die Kollision auch diesen Vortest, wird die exakte Berechnung durchgeführt

Dieses Verfahren ist im Prinzip immer noch O(n²). Dies lässt sich aber grundsätzlich nicht vermeiden, da es n² Kollisionen geben kann.

Autor
Lathanda

Definiert in Zeile 34 der Datei CollisionDetection.java.

Beschreibung der Konstruktoren und Destruktoren

◆ CollisionDetection()

de.lathanda.eos.game.geom.CollisionDetection.CollisionDetection ( Game  game)

Neues Objekt

Definiert in Zeile 44 der Datei CollisionDetection.java.

Dokumentation der Elementfunktionen

◆ addObject()

void de.lathanda.eos.game.geom.CollisionDetection.addObject ( Sprite  sprite)

Registriert ein Spielobjekt für die Kollisionserkennung, dies darf niemals von Sprite#render(Picture) aus geschehen. Neue Objekte dürfen nur über Sprite#update() registriert werden.

Parameter
spriteSpielobjekt

Definiert in Zeile 56 der Datei CollisionDetection.java.

◆ checkCollision()

void de.lathanda.eos.game.geom.CollisionDetection.checkCollision ( )

Berechnet alle Kollisionen. Abhängig von der Anzahl der Objekte und tatsächlich vorliegender Kollisionen kann dieser Aufruf sehr lange dauern.

Definiert in Zeile 76 der Datei CollisionDetection.java.

◆ removeObject()

void de.lathanda.eos.game.geom.CollisionDetection.removeObject ( Sprite  sprite)

Entfernt ein Spielobjekt aus der Kollisionserkennung

Parameter
spriteZu löschendes Weltobjekt

Definiert in Zeile 66 der Datei CollisionDetection.java.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:
Impressum