Wie gehe ich mit einem Hangsprung in einem Läuferspiel um?

8

Was sollte in einem 2D-Endlosläufer passieren, wenn der Spieler "zu schnell" einen Hang hinauf rennt und springt?

Zum Beispiel in einem "normalen" Fall:

    .O.
   . __..O_____
  . /
 . /
 O/
_/

Wenn er sich langsam genug nach rechts bewegt, springt er nach oben und landet auf dem flachen Teil der Oberfläche. Wenn er sich jedoch zu schnell bewegt, hat der Sprung keine Auswirkung, da seine Vorwärtsbewegung ihn wieder in Kontakt mit dem Hang bringt, bevor er hoch genug wird, um darüber hinwegzukommen. Wenn die Geschwindigkeit ausreichend hoch ist, gibt es effektiv keinen Sprung.

     _________
    /
 .O/
 O/
_/

Gibt es bekannte Möglichkeiten, um dieses Problem zu lösen? Ich weiß, dass es physikalisch korrekt ist *, aber gibt es Techniken, mit denen andere Spiele dies auf vernünftige Weise überwinden?

Als letzten Ausweg muss ich einfach alle zu schrägen Hänge entfernen.

* Wenn Sie den Spieler daran hindern, niemals rückwärts zu springen.

you786
quelle
Es scheint, als würde der Übergang von flachem Boden zu steilem Hügel den Spieler genug verlangsamen, um den Sprung zu machen. Wenn sie ihre Geschwindigkeit halten wollen, würden sie vor dem Hang springen. Nur zu Ihrer Information, ich denke, Ihre Frage ist eine Art "Hilf mir bei der Entscheidung" -Frage, die auf einer Art Meinung basiert.
MichaelHouse
@ Byte56 Vielleicht kann eine Meinung in die Mischung eingehen, aber ich denke, das ist immer noch eine gute Frage. Einige der besten Fragen auf dieser Website haben eine Meinung dazu. Eine gute Antwort könnte auf ausgelieferte Lösungen hinweisen.
Kevintodisco
@ktodisco Ich stimme zu, die Antworten können aus einer Grenzfrage eine großartige machen. (Obwohl das letzte Ihrer Beispiele zu Recht geschlossen ist).
MichaelHouse
Eine Möglichkeit, die ich gesehen habe (ich weiß, dass das nicht besonders überzeugend ist), könnte darin bestehen, die Sprungrichtung relativ zum Winkel des Bodens unter Ihnen zu bestimmen. Wenn Sie also auf einen Abhang springen, erhalten Sie etwas Vorwärtsdynamik, aber nicht Springen Sie so hoch, während ein Sprung auf einen Aufwärtstrend Sie mit reduziertem Vorwärtsmoment höher schickt (stellen Sie sich den Sprung als vom Boden abstoßend vor)
Tin Man
@ Amadeus9 das ist ein guter Punkt, aber ich denke in diesem speziellen Fall würde ich mich nicht bewerben. Das Verringern der Geschwindigkeit beim Springen führt schließlich immer noch zu einer Hangkollision, da die Geschwindigkeit unbegrenzt zunimmt.
you786

Antworten:

11

Hier sind einige Beispiele, wie Spiele (Läufer oder andere) mit dieser Situation umgegangen sind. Es gibt kein "Bestes" und Sie müssen sich noch entscheiden, welches für Ihr Spiel geeignet ist.

Der physikalisch "richtige" Weg (vertikaler Impuls)

Zum Springen fügen Sie Ihrer Bewegungsgeschwindigkeit (grün) einen vertikalen Impuls (rot ) hinzu . Die resultierende Geschwindigkeit (blau) bringt Sie immer über den Hang. Solange Ihr Hang nicht zu schnell steiler wird, springt Ihr Charakter immer über den Hang.

winzige Flügel

Die Einschränkung ist, dass Sie jetzt sehr hoch springen können, wenn Ihr Charakter einen steilen Hang hinauf rast.

Senkrechte Sprünge (Sonic)

Beim Springen verläuft Ihr Sprungimpuls in einer Richtung (rot) senkrecht zur Steigung (grün) . Möglicherweise erinnern Sie sich an dieses Verhalten aus den Sonic-Spielen.

Sonic

Die Einschränkung ist, dass Sie an sehr steilen Hängen oft rückwärts springen.

Kein Springen auf Pisten

Vielleicht entscheiden Sie, dass Pisten etwas Besonderes sind und es keinen Sinn macht, darauf zu springen. Zum Beispiel sind Treppen eine besondere Art von Hang, auf den man in einigen Spielen überhaupt nicht springen kann.

Castlevania 3

Die Einschränkung ist, dass Sie, wenn Sie dem Spieler die Kontrolle auf diese Weise entziehen, die Erwartungen klar kommunizieren müssen, da der Spieler sonst frustriert werden kann. Zum Beispiel verwendet Castlevania eine spezielle "Treppensteigen" -Animation, um zu verdeutlichen, dass es sich um eine besondere Art von Bewegung handelt.

Kein Laufen an steilen Hängen

Eine andere Möglichkeit besteht darin, das Klettern zu steiler Hänge unmöglich zu machen - die Spieler rutschen nach unten, als wäre es ein wandartiges Hindernis. Da sie fallen oder herunterrutschen, ist es klar, dass sie auch in dieser Zeit nicht springen können.

Keine steilen Hänge

Sie könnten den einfachen Ausweg nehmen und Hänge, die Ihnen solche Probleme bereiten, vollständig entfernen. Dies ist keine so schlechte Idee, wie es sich anhört, denn das Gehen auf Hängen macht keinen Spaß. Hänge runter zu gehen ist viel aufregender!

Skisafari

Keine Pisten (die Mu-Antwort)

Wenn es um das Gameplay geht, bin ich ein Fan von minimalistischem Design - wie das Sprichwort sagt: "Perfektion wird endlich erreicht, nicht wenn es nichts mehr hinzuzufügen gibt, sondern wenn es nichts mehr zum Mitnehmen gibt". Dienen Pisten einem nützlichen Spielzweck oder sehen sie einfach nur gut aus - dh machen sie Spaß ? Schließlich ist es vollkommen in Ordnung, einen Läufer ohne Pisten zu haben.

Canabalt

Congusbongus
quelle
Danke für die ausführliche Antwort. Für die Aufzeichnung habe ich am Ende alle zu steilen Hänge entfernt.
you786
1

Für alle anderen, die darauf stoßen, habe ich es umgangen, indem ich eine Mindestanzahl von Frames hatte, die in der Sprunganimation passieren müssen, bevor eine Kollision mit dem Hügel registriert wird. Auf diese Weise haben Sie eine Nachfrist, damit der Charakter ein wenig aufstehen kann, ohne sich um die Hangkollision sorgen zu müssen.

Daniel Keele
quelle
-1

Der Raycast ist eine gute Idee. Sie können den Ray Judge verwenden, um festzustellen, ob es sich um eine Steigung handelt. Anschließend können Sie die Geschwindigkeit steuern, indem Sie die Geschwindigkeit des Spielers ändern.

FengYi Ya
quelle
Sie können diese Antwort erheblich verbessern, indem Sie erklären, wie .