Da ich mich mal wieder nach Alternativen zur farseer-Engine umgesehen habe ( war mir doch wein wenig zu komplex ;) ), bin ich auch das SAT ( Separating Axis Theorem ) gestoßen und es war genau das, was ich brauche.
Wie funktioniert es?
Der Grundgedanke ich einfach: Sobald ich eine Linie zwischen zwei Körpern zeichnen kann und die Linie diese Körper nicht berührt, berühren sich auch die Körper nicht ( s. Abb1 ).
|
Abb1.: Es wird eine Linie zwischen zwei Objekten gebildet, ergo berühren sie sich nicht. |
Wenn es jedoch keine Lücke gibt, also von allen Seiten ( man bildet diese Linie immer entlang zweier Eckpunkte eines Polygons ) die Projektionen ( blaue Linien oben ) überlappen, so berühren/schneiden sich die Polygone ( s. Abb2 ).
|
Abb2.: Alle Projektionen ( pinke und blaue Linien ) auf den gestrichelten Linien überlappen sich. |
Wenn ihr mehr wissen möchtet, könnt ihr gerne bei der Suchmaschine eures Vertrauens suchen, ihre werdet bestimmt was finden. Das Prinzip ist eigentlich einfach, nur wirkt es im ersten Moment sehr abtrakt.
Wann ich das ganze im Map-Editor einbauen werde weiß ich noch nicht ganz genau, aber erstmal wollte ich die Einstellungen/Eigenschaften der Objekte unterbringen ( sprich Änderung der Position, etc. ).
In der nächsten Version ( 0.0.4 ) wird dieses System aber definitiv vorhanden sein.
mfg
Hauke
Quellen:
Abb1.:
http://back2basic.phatcode.net/?Issue_%231:2D_Convex_Polygon_Collision_using_SAT ( 22.07.2014 )
Abb2.:
http://www.codezealot.org/archives/55 ( 22.07.2014 )