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:
Habt ihr einen Tipp, wie die Objekte sauber von einander abprallen könnten bzw. was bei der genannten Bedingung falsch läuft?
Vielen Dank!
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!