2D Kollisionsreaktion: Zwei Bewegte Objekte



  • Hi,

    Wie gesagt, es geht mir nicht um die Kollisionserkennung, sondern um eine richtige Reaktion, d.h. wie muss ich die Rechtecke verschieben, damit sie nicht mehr kollidieren. Und da ist es schon ein Unterschied, wenn zwei Objekte bewegt oder eben nur eines bewegt und das andere fest ist. Wenn nämlich beide sich bewegen können, muss ich doch grundsätzlich auch nach einer Kollision beide so verschieben, dass sie nicht mehr kollidieren. Ist dagegen eins unbewegt, bleibt das fest und das andere slidet dran entlang... oder mach ich gerade einen Denkfehler ? Ich glaube nicht, denn wenn man nochmal im FAQ nachschaut: Da gibts auch verschiedene "Collision" Funktionen...



  • ... aber leider ist im FAQ nur die Collision Funktion für "bewegt mit unbewegt" aufgeführt ...



  • achim2310 schrieb:

    Wie gesagt, es geht mir nicht um die Kollisionserkennung, sondern um eine richtige Reaktion, d.h. wie muss ich die Rechtecke verschieben, damit sie nicht mehr kollidieren. Und da ist es schon ein Unterschied, wenn zwei Objekte bewegt oder eben nur eines bewegt und das andere fest ist. Wenn nämlich beide sich bewegen können, muss ich doch grundsätzlich auch nach einer Kollision beide so verschieben, dass sie nicht mehr kollidieren. Ist dagegen eins unbewegt, bleibt das fest und das andere slidet dran entlang... oder mach ich gerade einen Denkfehler ? Ich glaube nicht, denn wenn man nochmal im FAQ nachschaut: Da gibts auch verschiedene "Collision" Funktionen...

    Hi. :p
    Bei der stat./dyn. Kollision kannst Du herausfinden, wie viel des Bewegungsvektors das dyn. Objekt sich bewegen muß, um SO GERADE das stat. zu berühren. Diese Zahl liegt zwischen 0.0 und 1.0.
    Das dyn./dyn. Problem kannst Du auf das gleiche reduzieren, da Du von einem dyn. den Bew.Vek. auf das andere Objekt anrechnest. D.h. Du beachtest nur die Relativbewegung. Die wiederum rausgefundene "Laufweite" x | 0.0 <= x <= 1.0 kannst Du auf beide Bewegungsvektoren anrechnen und erhälst den exakten First-Time-Of-Contact.
    Das hat aber auch noch mit der Kollisionserkennung (!) zu tun, aber scheinbar willst Du das nicht?!?!



  • 3 generelle Ansätze:
    - beides bleibt stehen
    - das kleinere Objekt wird reflektiert
    - das kleinere Objekt fliegt auf seiner Bahn zurück

    Bye, TGGC (Der Held ist zurück)



  • Sgt. Nukem schrieb:

    Das hat aber auch noch mit der Kollisionserkennung (!) zu tun, aber scheinbar willst Du das nicht?!?!

    Also ich les da oben "Kollisions_reaktion_". 😉



  • TGGC schrieb:

    Sgt. Nukem schrieb:

    Das hat aber auch noch mit der Kollisionserkennung (!) zu tun, aber scheinbar willst Du das nicht?!?!

    Also ich les da oben "Kollisions_reaktion_". 😉

    Jo, eben. Das Problem daß er beschrieben hat schien mir aber noch in der Kollisions_erkennung_ zu liegen... deswegen bin ich leicht verunsichert, was er überhaupt von uns will... 😕 😉



  • Ups, haben wohl gleichzeitig geschrieben...

    Also, in meinem Spiel gibts nur Rechtecke, d.h. so speziell "Impulzerhaltung" möcht ich zunächst garnicht werden (das kommt dann später vielleicht). Angenommen ich hab zwei Rechtecke: Das eine bewegt sich in Richtung Süd-Südost (also Vektor (1 , 2) multipliziert mit irgend nem Faktor t) das andere in Richtung Süd-Südwest (also Vektor (-1, 2) multipliziert mit irgend nem Faktor k) und die liegen halt so nah aneinander, dass sie sich treffen. Was muss ich jetzt machen ? Schnittpunkt ausrechnen und dann Positionen mit Hilfe des Schnittpunkts setzen ? Und wie muss ich dann die Richtungsvektoren der Rechtecke setzen (="Auseinanderprallen" -> wie gesagt, muss nicht so physikalishc korrekt sein, da ja sowieso alle Objekte in meinem Spiel wie Rechtecke behandelt werden [also auch Kreise] ...



  • Ups, geht ja richtig flott hier: Ob das jetzt Kollisionserkennung oder Reaktion ist... Bei mir ist Kollisionsrekennung: Zwei Rechtecke überschneiden sich. Kollisionsreaktion: Positionen so setzten, dass keine Kollision mehr stattfindet, den Rest macht dann die "KI"



  • Mögliche Methoden nannte ich. Du musst dir nun die passende aussuchen oder einfach alle einbauen.

    (BTW: stimmt nicht, war eine Minute später)

    Bye, TGGC (Der Held ist zurück)



  • TGGC schrieb:

    (BTW: stimmt nicht, war eine Minute später)

    Nö. Kann mich ja gar nicht gemeint haben, der Beitrag war ja nicht editiert... 🤡

    achim2310 schrieb:

    [...] und die liegen halt so nah aneinander, dass sie sich treffen. Was muss ich jetzt machen ? Schnittpunkt ausrechnen und dann Positionen mit Hilfe des Schnittpunkts setzen ? Und wie muss ich dann die Richtungsvektoren der Rechtecke setzen (="Auseinanderprallen" -> wie gesagt, muss nicht so physikalishc korrekt sein, da ja sowieso alle Objekte in meinem Spiel wie Rechtecke behandelt werden [also auch Kreise] ...

    TGGC schrieb:

    3 generelle Ansätze:
    - beides bleibt stehen
    - das kleinere Objekt wird reflektiert
    - das kleinere Objekt fliegt auf seiner Bahn zurück

    Zuästzlich:
    - Beide werden reflektiert (billig)
    - Beide fliegen auf ihrer Bahn zurück
    - Beide werden entsprechend ihren Massen reflektiert (Impulserhaltung)

    ➡
    a) Beide Bew.Vek. auf 0 setzen
    b) Einfallwinkel/Ausfallwinkel (an Normale spiegeln)
    c) Bew.Vek. des kleineren * -1
    d) s. b)
    e) s. c) für beide
    f) m * v muß vorher/nachher gleich sein, ansonsten s. b)


Anmelden zum Antworten