Kollisionserkennung bei gezeichneten Objekten

Status
Nicht offen für weitere Antworten.

BountainMike

Neues Mitglied
Hallo,


ich bin was die Spiele-Programmierung angeht, noch ein Anfänger und könnte eure Hilfe gebrauchen. Ich programmiere gerade eine Art Spiel des Lebens, das ich später noch weiter ausbauen möchte.

In meinem Spielfeld bewegen sich dafür verschiedene Objekte (Rechtecke und Kreise). Diese lassen durch einen Thread immer wieder neu zeichnen mittels fillRect(x,y,groessex,groessey) bzw. fillOval(x,y,groessex,groessey). Die Bewegung erfolgt ausschließlich diagonal (45° in alle 4 Richtungen), indem die Position der Objekte um +/- 1 verändert wird.

Die Objekte sollen nun aber zusammenstoßen und von einander abprallen. Dabei überlappen und verhaken sich momentan jedoch immer wieder einige Objekte, die dann nicht mehr von einander loskommen. Vereinfacht dargestellt, sieht die Kollisionsbedingung wie folgt aus:
if((obekt1.x <= objekt2.x) && ((objekt1.x+objekt1.groesse)>=objekt2.x) && ...ähnliche Bedingungen für die y-Koordinaten) {
objekt1.richtungx=-objekt1.richtungx;
objekt2.richtungx=-objekt2.richtungx;
objekt1.richtungy=-objekt1.richtungy;
objekt2.richtungy=-objekt2.richtungy;
}

Habt ihr einen Tipp, wie die Objekte sauber von einander abprallen könnten bzw. was bei der genannten Bedingung falsch läuft?


Vielen Dank!
 

Quaxli

Top Contributor
Sieht umständlich aus... . Verwendest Du keine Grafikprimitive von Java? (Rectangle, etc.?)

Du solltest nicht auf Variablen direkt zugreifen. Getter- und Setter-Methoden wären besser oder in diesem Fall sogar eine eigene Methode (inverseMove(...) oder so).

Lösungsvorschlag: Du könntest im Falle einer Kollision für die beiden Objekte im Anschluß die Methode, mit der Du sie bewegst, noch einmal extra aufrufen. Wenn Dein GameLoop schnell genug ist, ist die Bewegung so klein, daß das nicht auffällt und reicht aber aus, daß die Kollissionserkennung beim nächsten Durchlauf nicht mehr zuschlägt.
 
S

SlaterB

Gast
mit getter/ setter sähe es aber teilweise noch schlimmer aus, dann schon lieber höhere Methoden

object1.reverse();
statt
objekt1.richtungx=-objekt1.richtungx;
objekt1.richtungy=-objekt1.richtungy;

edit:
oh, inverseMove(...) hattest du auch vorgeschlagen ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Kollisionserkennung und -behandlung Spiele- und Multimedia-Programmierung 3
N Kollisionserkennung Spiele- und Multimedia-Programmierung 5
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
Cromewell JavaFX Kollisionserkennung Spiele- und Multimedia-Programmierung 6
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
S Kollisionserkennung in Slick2D... Mal wieder Spiele- und Multimedia-Programmierung 4
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
Androbin Pixel-genaue Kollisionserkennung Spiele- und Multimedia-Programmierung 5
Kenan89 Kollisionserkennung - Idee Spiele- und Multimedia-Programmierung 5
T Kollisionserkennung mit AABBs und Spielerobjekt Spiele- und Multimedia-Programmierung 4
P Kollisionserkennung Spiele- und Multimedia-Programmierung 6
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
Apo Kollisionserkennung bei Jump'n'Run Spiele- und Multimedia-Programmierung 69
M Kollisionserkennung optimieren Spiele- und Multimedia-Programmierung 7
M Kollisionserkennung Spiele- und Multimedia-Programmierung 4
E Probleme mit Kollisionserkennung ! Spiele- und Multimedia-Programmierung 2
P Kollisionserkennung Spiele- und Multimedia-Programmierung 3
R Kollisionserkennung funktioniert nicht Spiele- und Multimedia-Programmierung 3
C Kollisionserkennung Spiele- und Multimedia-Programmierung 3
E Tetris mit Images anstatt gezeichneten Rechtecken Spiele- und Multimedia-Programmierung 4
M JPanel mit Graphics2D Objekten mit JScrollpane Spiele- und Multimedia-Programmierung 6
BraunBerry Rotation von Objekten um ein Raumschiff Spiele- und Multimedia-Programmierung 6
R Verschieben von Objekten langsam Spiele- und Multimedia-Programmierung 0
S [lwjgl] Renderbug bei mehreren Objekten Spiele- und Multimedia-Programmierung 2
F Kollisionsabfrage bei schnellen Objekten Spiele- und Multimedia-Programmierung 2
M Collisions mit festen Objekten Spiele- und Multimedia-Programmierung 8
P "Tiefe" in Objekten - LWJGL Spiele- und Multimedia-Programmierung 12
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
StrikeTom Schwerkraft mit festen objekten darstellen Spiele- und Multimedia-Programmierung 27
L Platzieren von Objekten auf TileMap Spiele- und Multimedia-Programmierung 6
P Culling von Image-Objekten Spiele- und Multimedia-Programmierung 3
B 1)JButtons zeichnen 2)Kolisionsabfrage von zwei Objekten Spiele- und Multimedia-Programmierung 9
D Array aus Objekten Spiele- und Multimedia-Programmierung 2
V Koordinaten von Objekten? Spiele- und Multimedia-Programmierung 8
J Kollision von Objekten Spiele- und Multimedia-Programmierung 7
J Simulation mit vielen Objekten: Datenbank? Spiele- und Multimedia-Programmierung 6
F Bewegung/Kollision von Objekten auf Tastendruck Spiele- und Multimedia-Programmierung 6
G Bewegen von Objekten Spiele- und Multimedia-Programmierung 4
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen


Oben