Kollision-Reaktion in einem 2D-side-scroller-Spiel, ähnlich wie "Mario"

Wurde erheblich belästigt mich in den letzten paar Wochen. In dieser Zeit hab ich schon online recherchieren, auch das Lesen von Büchern in der "Computer" an den Grenzen, um zu versuchen, eine Antwort zu finden, aber ich hatte noch nicht viel Glück.

Programmierte ich ein 2D-level-editor für side-scroller-video-Spiele. Jetzt will ich schalten Sie es in einen Spiel wo ich einen Spieler, der laufen und springen erkunden der level, ähnlich wie bei "Mario".

Ist die Sache, die wirklich, gebe mir Mühe, ist die Kollision-Reaktion (nicht-Erkennung: ich weiß schon, wie zu sagen, wenn zwei Blöcke kollidieren). Hier sind einige Szenarien, die ich zu veranschaulichen, so dass Sie sehen können, meine Probleme (die schraffierten Blöcke sind der Boden, der Pfeil ist der geschwindigkeitsvektor der Spieler, die gestrichelten Linien sind die projizierten Weg des Spielers).

Sehen diese Kollision Lösungsszenarien Bild:

Kollision-Reaktion in einem 2D-side-scroller-Spiel, ähnlich wie
http://dl.dropbox.com/u/12556943/collision_detection.jpg

Davon ausgehen, dass die geschwindigkeitsvektoren in den Szenarien (1) und (2) gleich sind (gleiche Richtung und Größe). Doch in Szenario (1), die Spieler auf die Seite des Blocks, und in Szenario (2), der Spieler landet auf der Oberseite des Blocks. Dies ermöglicht mir, zu dem Schluss, dass die Bestimmung der Kollision Antwort ist nicht nur abhängig von der Geschwindigkeit Vektor der Spieler, sondern auch die Spieler, die relative position zu der Kollision blockieren. Das führt mich zu meiner ersten Frage: kennt man den geschwindigkeitsvektor und die relative position des Spielers, wie kann ich feststellen, aus welcher Richtung (entweder Links, rechts, oben oder unten) der Spieler eine Kollision mit dem block?

Einem anderen problem, das ich habe, ist, wie zu bestimmen, die Kollision Antwort, wenn der Spieler kollidiert mit mehrere Blöcke in dem gleichen Rahmen. Zum Beispiel davon ausgehen, dass in Szenario (3), der Spieler kollidiert mit beiden Blöcken gleichzeitig. Ich gehe davon aus, dass ich bin zu haben, um eine Schleife durch jeden block, den der Spieler kollidiert mit und passen Sie die Reaktion entsprechend aus jedem block. Um es zusammenzufassen, dies ist meine zweite Frage: wie gehe ich mit Kollision Antwort, wenn der Spieler kollidiert mit mehreren Blöcken?

Bemerken, dass ich nie offenbart die Sprache, ich bin Programmierung in; dies ist, weil ich würde es vorziehen, für Sie nicht wissen (nichts persönliches, aber :] ). Ich bin mehr daran interessiert, in pseudo-code als Sprache gesehen-spezifischen code.

Dank!

  • Verwenden Sie eine Kachel-basierte Welt (ähnlich dem 2D-Mario-Spiele)? Dein Bild führt mich zu glauben, dass Sie sind, aber ich bin mir nicht sicher.
  • Ja, ich habe ein 2D-array speichert den Typ jedes einzelnen Blocks in der Ebene.
InformationsquelleAutor Rob | 2011-07-13
Schreibe einen Kommentar