Wandsprung für 2D Platformer

14

Ich habe nach einer Möglichkeit gesucht, Wall-Jump in meinem XNA-Spiel zu implementieren, aber ich kann keine Informationen dazu finden. Kann mir jemand bitte helfen?

dbomb101
quelle

Antworten:

21

Wenn ein Spieler beim Springen mit einer Wand kollidiert (oder, wenn Sie möchten, beim Fallen), schalten Sie für die nächsten 100 Millisekunden eine Flagge an, so dass ein Versuch, zu springen, erfolgreich einen Sprung auslöst (Oberflächenkontaktprüfungen werden ignoriert) mit a ziemlich viel Geschwindigkeit auf der X-Achse in der Richtung von der Wand entfernt. Denken Sie daran, die Flagge vorzeitig auszuschalten, wenn tatsächlich ein Sprung eingeleitet wird.

Chaos
quelle
3
Ich denke, Sie müssen den ersten Satz ändern: "Wenn ein Spieler mit einer Wand kollidiert (während er springt) ..." Andernfalls könnte der Spieler von einer Stelle auf dem Boden neben einer Wand springen, was nicht der Fall wäre erwartet.
CiscoIPPhone
@ CiscoIPPhone: Ja, danke. Dies würde eine merkwürdige Änderung des Verhaltens zwischen den 100 ms nach der Kollision und später hervorrufen.
Chaos
2

Ich hätte ehrlich gesagt nur einen Punktcheck gemacht. So:

if (falling AND left_key_pressed AND !point_free(x-1,y))
    doWallJump

Sie können das y ändern, um y + sprite_width / 2 (oder - abhängig von Ihrem Koordinatensystem) zu sagen, sodass es links von der Mitte Ihr Sprite anstelle des oberen (oder unteren) prüft. Auf diese Weise implementiert N Wandprüfungen für das Springen von Wänden (letzter Absatz) .

Danach müssen Sie entscheiden, wie eng Ihre Wand springen soll. Wenn die vertikale Geschwindigkeit Ihres Sprungs die horizontale Geschwindigkeit übersteigt, bevor der Spieler dieselbe Wand wieder erreichen kann, können Sie dieselbe Wand nicht mehr hochspringen und fallen nach und nach auf den Boden zurück (wie in Mario-Spielen mit dem Wandspringen) ). Wenn Sie zulassen, dass die Horizontale schwach genug ist, damit der Spieler wieder an die Wand zurückkehren kann, kann er die Wand nach oben rücken (wie in Meat Boy).

Ein anderer Ansatz, der nicht erwähnt wird, ist der von Super Metroid. Wenn Sie sich in diesem Spiel an einer Wand befinden und sich von dieser Wand entfernen, wird eine sehr kurze Animation abgespielt, in der Sie sich von der Wand entfernen. Wenn Sie während dieser Animation springen, machen Sie einen Wandsprung. (Super Metroid erlaubt es einem Spieler auch, mit Mauersprüngen eine Mauer hinaufzuklettern, erfordert jedoch ein wenig Geschicklichkeit (in der Tat erfordert alles, was mit Super Metroid zu tun hat, einiges an Geschicklichkeit ...).

Jeff
quelle