Kollisionserkennung - Idee

Kenan89

Bekanntes Mitglied
Hallo,

in Java gibt es ja die einfache Methode insertecs, oder so ähnlich, mit der man 2 Rechtecke auf Kollision überprüfen kann.

Auf meiner Spielkarte habe ich z.B. 10 objekte(Menschen, Tiere, etc) die sich bewegen. Es läuft so ab:
Obj1 wird mit allen Objekte auf Kollision überprüft und alle Objekte mit den es kollidieren würde, erhalten ein boolean auf trúe gesetzt, welches ihnen verbietet, sich in die Gegenrichtung des Helden zu bewegen, denn wenn der Held rechts geht und mit Obj2 kollidieren würde, muss seine Bewegung zurückgesetzt werden und Obj2 darf dann natürlich auch nicht nach links, da er sonst mit dem Helden kollidieren würde.
So ist folgende Struktur möglich:

Kollisionsüberprüfungen der Rectangles:

Obj1 mit Obj2
Obj1 mit Obj3
Obj1 mit Obj4
Obj1 mit Obj5

Obj2 mit Obj3
Obj2 mit Obj4
Obj2 mit Obj5

Obj3 mit Obj4
Obj3 mit Obj5

Obj4 mit Obj5

Coole Methode oder? Was haltet ihr davon? Wird es vielleicht sogar in der professionellen Spieleindustrie so gehandhabt?
 
S

SlaterB

Gast
deine Auflistung ist alle Kombinationen der 5 Objekte untereinander, das scheint nicht so besonders sein,

wenn du von links und rechts sprichst, dann sind die Objekte alle auf einer Linie?
das solltest du ausnutzen, in dem du sie ständig in einer Liste in korrekter Reihenfolge hälst,
evtl. erlaubtes Überholen macht zwar Arbeit, Kollision wäre dann aber nur noch zwischen benachbarten Objekten zu prüfen,
hier 5 statt 10 Vergleiche
 

c_sidi90

Top Contributor
Ich denke mal es wird wohl einige Spiele geben, bei denen eine Art Methode wie du sie beschrieben hast verwendet wird. Fakt ist jedoch, dass das Thema collisiondetection bei jedem Spiel unterschiedlich ist. Es gibt vlt. Pseudocodes welche einem auf die richtigen Wege bringen, es jedoch zu verallgemeinern wäre falsch. Jedes Spiel verhält sich schließlich unterschiedlich bei bestimmten Ereignissen.

Auch muss man möglichst darauf achten, dass die performance nicht unter unnötigen Berechnungen leidet.

Fazit von mir, wenn es für dein Spiel funktioniert, why not. Obs die profis auch so handhaben müsstest du mal google fragen, mir liegen jetzt keine Blizzard Sourcecodes vor ;D
 

Kenan89

Bekanntes Mitglied
deine Auflistung ist alle Kombinationen der 5 Objekte untereinander, das scheint nicht so besonders sein,

wenn du von links und rechts sprichst, dann sind die Objekte alle auf einer Linie?
das solltest du ausnutzen, in dem du sie ständig in einer Liste in korrekter Reihenfolge hälst,
evtl. erlaubtes Überholen macht zwar Arbeit, Kollision wäre dann aber nur noch zwischen benachbarten Objekten zu prüfen,
hier 5 statt 10 Vergleiche

Die Spielkarte ist unter umständen größer als der screen. es geht in richtung x und y, also nicht in eine Linie.
 

Fu3L

Top Contributor
Wenn es wirklich viele, viele, sehr viele Objekte sein sollten, müsstest du über sowas wie einen Quadtree (Wikipedia) nachdenken. Bei 5 Objekten, machs so wie bisher, bei Vielfachen von 10 vllt dann schon die Objekte zB nach Höhe sortieren. (Warst du der, dem ich die TreeMap empfahl? Dann sind die eh nach y-Wert sortiert, dann musst du nur für Indizes [y-100;y+100] um ein Objekt herum prüfen (vorrausgesetzt das größte Objekt ist 100 hoch).)
 
S

Spacerat

Gast
Kollisiondetection mit "BoundingBoxes" ist afaik meistens schon der 2. Schritt. Als erstes würde ich für zwei Objekte BoundingSpheres verwenden, deren Radien ich von der Distanz ihrer Mittelpunkte abziehe. Solange dieses Ergebnis positiv ist kann auch keine Kollision der BoundingBoxes erfolgen.
 
Ä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
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
B Kollisionserkennung bei gezeichneten Objekten Spiele- und Multimedia-Programmierung 2
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
Spin Java Spiel Idee - Lust? Spiele- und Multimedia-Programmierung 16
F jump and run idee Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen


Oben