Thema: Delphi Genaue Kollisionen

Einzelnen Beitrag anzeigen

kddc.l3usch

Registriert seit: 6. Nov 2007
20 Beiträge
 
Delphi 7 Personal
 
#1

Genaue Kollisionen

  Alt 14. Feb 2010, 01:44
Hi

wie der titel schon verrät geht es um kollisionen! Es geht dabei um unsere eigene 2D Engine Edge2D.
einfach rechteckollisionen haben wir schon. Genauso geht es auch ganz exakt genau in eine einzelne richtung.
Das mache ich so...Ich überprüfe den Abstand von einem Objekt zum anderen. Es gibt einzel Abstände rechts, links, oben, unten und eine gesamtdistanz zum andern Objekt. wenn ein Objekt nun runter fällt, dann überprüfe ich also den abstand, und habe eine gegebene Geschwindigkeit. So lange der ABstand > distanz soll er ganuso schnell weiter machen. Wenn der abstand kleiner der Distanz ist, dann setzt er das Objekt um den Abstand weiter und somit liegt ein Objekt exakt auf dem andern auf...logisch denke ich.

Das Problem ist nur dass, das in mehrere Richtungen nicht mehr klappt, speziell im Bezug auf Maps wo ein Objekt mehrere hundert Objekte auf kollisionen an allen seiten überprüfen muss. Da wirken die sich alle irgendwie entgegen...es funktioniert zwar so weit, aber wenn ich diagonal auf eine wand treffe zum beispiel springt das objekt seltsam hin und her....

Also wie würdet ihr genau kollisionen machen? Habt ihr ne Idee? Ihc bin echt am Ende...ich geb echt nicht schnell auf, aber das war nciht meine erste idee sondern meine zehnte oder so und nichts hat so wirklich geklappt...
Also das habe ich IM MOMENT zu verfügung:

Normale Rechteckskollisionen (Überlappen)
Positionen von Objekten und Ecktpunkte
Die Bewegungsrichtung der Objekte (links, rechts, diagonal etc)
die distanz von einem Objekt zum Anderen ( linken, Abstand, rechten Abstand, nach oben, nach unten) gesamt Abstand

Habt ihr ne idee wie ich die Sachen so verknüpfen kann, dass ich in alle Richtungen genaue kollisionen habe?...hat jemand shconmal ähnliches gemacht?
Wenn irgendwelche werte oder eigenschaften fehlen, kann ich die auch noch irgendwie einbauen...das sollte nciht das Problem sein

Danke für eure Hilfe KddC
  Mit Zitat antworten Zitat