Sliver21
2007-06-09, 21:52:54
Hallo Jungs,
ich bin gerade dabei, für unser Spiel eine Kollisionsbehandlung zu machen. Oder eher: ich habe sie schon längst fertig, aber leider läuft sie fehlerhaft (zwar selten, kommt aber in ungünstigen Situationen vor). Zum Spiel: Es ist ein 2D Rennspiel a la Micro Machines mit rechteckigen Fahrzeugen. Wenn zwei Fahrzeuge kollidieren, so stoßen sie sich voneinander ab, als seien sie Kugeln. Der Algorithmus zur Berechnung der Geschwindigkeiten nach dem Stoß funktioniert einwandfrei. Der Algorithmus zur Kollisionskontrolle funktioniert auch einwandfrei.
Bei uns ist es so, dass bei jedem Frame zuerst die Translation aller Fahrzeuge berechnet wird und dann, nachdem diese abgeschlossen ist, die Translation durchgeführt wird.
Nun zu unserem Problem: Eine Kollision findet statt, wenn zwei Fahrzeuge überlappen. Wie muss die Kollisionsbehandlung nun logisch richtig strukturiert werden, damit es zu keinen 'Inkonsistenzen' im Spiel kommt. Zur Zeit prallen die Fahrzeuge sehr gut aneinander ab, wenn bei der Kollision 2 Fahrzeuge beteiligt sind. Sind aber gleichzeitig mehrere Fahrzeuge darin verwickelt und die Kollisionen finden am Rand der Karte statt, wo die Fahrzeuze noch von der Wand abstoßen, so kommt es manchmal dazu, dass sich die Fahrzeuge ineinander 'verbeißen'. Sie überlappen, prallen ab, bleiben im nächsten Frame aber immer noch überlappend und kollidieren erneut usw. Es sieht auf jeden Fall ganz wild aus.
Nun zur eigentlichen Frage: Wie muss eine Kollisionsbehandlung aufgebaut sein, damit es zu keinem unerwarteten Verhalten der Fahrzeuge kommt. Mit Google konnte ich bisher nichts sinnvolles finden, was uns helfen könnte. Ich hoffe, ihr versteht, was ich meine und habt auch eine Idee, wie man das Lösen kann.
Falls noch etwas fehlt, dann sagt bescheid.
ich bin gerade dabei, für unser Spiel eine Kollisionsbehandlung zu machen. Oder eher: ich habe sie schon längst fertig, aber leider läuft sie fehlerhaft (zwar selten, kommt aber in ungünstigen Situationen vor). Zum Spiel: Es ist ein 2D Rennspiel a la Micro Machines mit rechteckigen Fahrzeugen. Wenn zwei Fahrzeuge kollidieren, so stoßen sie sich voneinander ab, als seien sie Kugeln. Der Algorithmus zur Berechnung der Geschwindigkeiten nach dem Stoß funktioniert einwandfrei. Der Algorithmus zur Kollisionskontrolle funktioniert auch einwandfrei.
Bei uns ist es so, dass bei jedem Frame zuerst die Translation aller Fahrzeuge berechnet wird und dann, nachdem diese abgeschlossen ist, die Translation durchgeführt wird.
Nun zu unserem Problem: Eine Kollision findet statt, wenn zwei Fahrzeuge überlappen. Wie muss die Kollisionsbehandlung nun logisch richtig strukturiert werden, damit es zu keinen 'Inkonsistenzen' im Spiel kommt. Zur Zeit prallen die Fahrzeuge sehr gut aneinander ab, wenn bei der Kollision 2 Fahrzeuge beteiligt sind. Sind aber gleichzeitig mehrere Fahrzeuge darin verwickelt und die Kollisionen finden am Rand der Karte statt, wo die Fahrzeuze noch von der Wand abstoßen, so kommt es manchmal dazu, dass sich die Fahrzeuge ineinander 'verbeißen'. Sie überlappen, prallen ab, bleiben im nächsten Frame aber immer noch überlappend und kollidieren erneut usw. Es sieht auf jeden Fall ganz wild aus.
Nun zur eigentlichen Frage: Wie muss eine Kollisionsbehandlung aufgebaut sein, damit es zu keinem unerwarteten Verhalten der Fahrzeuge kommt. Mit Google konnte ich bisher nichts sinnvolles finden, was uns helfen könnte. Ich hoffe, ihr versteht, was ich meine und habt auch eine Idee, wie man das Lösen kann.
Falls noch etwas fehlt, dann sagt bescheid.