Du bist nicht angemeldet.

Werbeanzeige

1

09.12.2014, 15:20

n-Ecke in 2D-Spielen

Wie funktioniert Kollisionserkennung bei n-Ecken die gedreht sind? Und wie programmiert man, dass der Spieler auf einer Schräge hochlaufen kann? Das einzige was ich hingenommen habe, ist dass man von Viereck zu Viereck (beide dürfen nicht gedreht sein) springen kann und dadurch dann eine Treppe hoch

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

09.12.2014, 15:25

Bei konvexen Polygonen ist es recht einfach zu testen, ob ein Eckpunkt des anderen innerhalb liegt. Bei konkaven wird's hässlich und man zerlegt sie entweder vorher oder muss eben eine recht aufwendige geometrische Analyse machen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Beiträge: 1 235

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

3

09.12.2014, 15:38

@BlueCobold
Um zu testen ob ein Punkt in einem (auch konkaven) Polygon liegt, gibt es eine relativ einfache Möglichkeit:
http://de.wikipedia.org/wiki/Punkt-in-Po…est_nach_Jordan

Leider ist es prinzipiell möglich(sogar auch schon bei konvexen), dass alle Eckpunkte nicht in einander liegen, aber die Polygonflächen sich überschneiden.

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

09.12.2014, 15:44

Stimmt, der Test kommt mir bekannt vor ;) Den habe ich sogar letztens hier auf Arbeit einem Kollegen vorgeschlagen... :rolleyes:
Den anderen Fall kann man dann nur noch mit Strecken-Schnitten testen. Bounding-Boxes und Punkt-Test hilft da eventuell aber schon die Komplexität (hoffentlich) vor dem aufwendigen Test zu reduzieren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

09.12.2014, 22:44

Ich hab das mal ungefähr so gemacht: Alle Geraden des ersten mit allen Geraden des zweiten (an einer Kollision potentiell beteiligten) Polygons vergleichen, bzw. berechnen, wo die sich schneiden (die Geraden aus den Eckpunkten berechnet). Wenn sich keine der Geraden schneiden, untersuchen, ob sich einer der Eckpunkte des einen innerhalb des jeweils anderen Polygons befindet. Ich hab keine Ahnung ab das so usus ist. So kann man es machen. Man kann auch ne Physikengine benutzen. ^^

Werbeanzeige