Tutorials für 2D Kollisionserkennung
-
Hi !
Ich suche ein paar gute Tutorials zur 2D Kollisionserkennung. Hat da jemand was schmackhaftes auf Lager ? Hab schon hier im Forum gesucht und gegoogled war aber nicht so dolle. Oder gibt es bereits eine fertige Bib die ich einbinden kann und sowas für mich überprüft. Ich benutze transparente PNGs.
thx
Tom
-
Könntest auch nicht transparente Bilder benutzen und dann eine Farbe Als Alpha Key festlegen, dann kannst das Bild Pixel für Pixel überprüfen, welche bereiche transparent sind und welche nicht...
Dürfte aber sehr sehr langsam sein ...
ansonsten kann ich http://www.gamedev.net/ empfehlen
cya WirrWar2850.
-
Also eine Möglichkeit wäre beispielsweise die absolute Entfernung zwischen den Objektmittelpunkten (Pythagoras hilft) nicht unter eine bestimmte Länge sinken zu lassen.. Sinkt die Entfernung darunter, wird der Impuls beider Objekte berechnet und ggf. umgedreht..
-
das würde bei Kreisförmigen Objekten helfen, weil die minimale Entfernung ja immer gleich is (Radius eben) und bei Rechteckigen Objekten würde es noch einfacher gehn:
Nimm Die X und Y Koords. deiner Objekte und prüfe unabhängig von der anderen Achse die X bzw. Y Achsen auf die Entfernungen, z.B. so:if((Xa-Xb)<minDistanceX) bCollisionX = true; // ...
Gibt dann allerdings Probleme, wenn sich deine Objekte drehen, siehe folgendes Bild: http://www.fabianw.com/wirrwar2850/pics/use_wherelse/coll_detect_xy.gif
cya WirrWar2850.
-
Hi vielleicht helfen dir die 2 Teile von http://www.spieleprogrammierer.de/ weiter.
-
Hi, ne library gibbet,aber leider nur für sdl/allegro: http://www.allegro.cc/https://sourceforge.net/projects/pmask/
Vielleicht hilft sie ja dennoch.
-
Folgender Algo geht für alles:
if( isKollision( Object1, Object2 ) ) { handleCollision( Object1, Object2 ); } else { doTheUsualThing(); }
Bye, TGGC (Keine Macht den Dummen)
-
TGGC schrieb:
Folgender Algo geht für alles:
if( isKollision( Object1, Object2 ) ) { handleCollision( Object1, Object2 ); } else { doTheUsualThing(); }
nicht wirklich. Beispiel: 3 Objekte.
if(isKollsion(object1,object2)) { //DONT MOVE } else { moveObjects(object1,object2); } [...]
Ich hoffe der Fehler in dem Algorithmus wurde klar