Kollisionserkennung

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Barcellona
User
Beiträge: 74
Registriert: Dienstag 25. Mai 2010, 12:10

Hallo,

ich versuche gerade am Thema Kollisionserkennung zu arbeiten.
Sowohl in 2D-Spielen als auch in 3D-Spielen.

Hat jemand Vorschläge/Ideen, wie ich das möglichst in leicht verständlichem Code
implementieren könnte, der trotzdem halbwegs schnell ist?

Die Funktion soll 2 Objekte (Spieler, Gegner) als Parameter nehmen und zurückgeben, ob
es eine Kollision gibt (True oder False).
In den Objekten sind Attribute verfügbar, wie x und y-Koordinaten.
Im 2D-Spiel zB x-Koordinate-links, x-Koordinate-rechts, y-Koordinate-oben, y-Koordinate-unten vom Sprite.

Danke für alle Vorschläge (falls jemand gute Artikel im Netz dazu kennt, auch gerne Link posten)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Das hängt natürlich ganz davon ab, wie genau die Erkennung werden soll. Das einfachste Modell sind Kreise mit Radien ri um die Objekte. Die Objekte 1 und 2 kollidieren dann, wenn die Mittelpunkte der Kreise näher zusammen sind als r1+r2. Meistens reicht dieser Ansatz schon aus.

Der Aufwand für Genauigkeit steigt natürlich spürbar über Bounding Boxen, orientierte Bounding Boxen, Ellipsen/Spähren und Dreiecken/Pixeln. Zu dem Thema wird dir die Suchmaschine deiner Wahl allerdings mehr als genug Treffer liefern.

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich habe bisher immer mit Tile-basierten Ansätzen gearbeitet. Aufgrund des zugrunde liegenden Rasters ist es dort fast trivial eine Kollision zu erkennen. Für viele Spiele reicht so was vollkommen aus - hängt aber nun stark von Deiner Idee ab.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten