Einen "Doppelsprung" richtig ausführen


23

Ich arbeite an einem 2D-iPhone-Spiel mit Corona (Testversion, daher kann ich deren Foren nicht verwenden). Das Spiel handelt von dem Charakter, der durch den Himmel fällt, und ich versuche, einen "Doppelsprung" für den Charakter zu implementieren, damit er in der Lage ist, beim Fallen hochzuspringen. Ich benutze Coronas Physikbibliothek, um den Charakter fallen zu lassen, und bis jetzt ist die beste Methode, ihn springen zu lassen, die vertikale Impulsmethode

object:applyLinearImpulse(0, -0.4, object.x, object.y)

Das Problem, dem ich gegenüberstehe, ist, dass der Charakter, wenn er gerade anfängt (vertikale Geschwindigkeit ist niedrig), sehr hoch springt, und wenn er eine Weile fällt (vertikale Geschwindigkeit ist hoch), ist der Sprung vernachlässigbar. Ich vermute, dass die beste Lösung darin besteht, eine Art Gleichung mit der Geschwindigkeit als Eingabe zu verwenden, um den Sprung unabhängig von der Geschwindigkeit gleich zu machen, aber ich kann nicht herausfinden, wie diese Gleichung aussehen würde.

Okay, das sind alle meine Gedanken. Die letzte Frage ist, wie genau setzt man einen Doppelsprung mit der Physik um? Gibt es eine richtige Gleichung für mein Problem? Sollte ich anders vorgehen? Es wurde schon in Spielen wie Smash Bros gemacht, es gibt also eine wiederholbare Lösung, oder?

Antworten:


37

Setzen Sie einfach die vertikale Geschwindigkeit auf Null und rufen Sie denselben Code auf, den Sie für den ersten Sprung verwenden.


4
Oh. Das ... funktioniert eigentlich ganz gut. Und so einfach, dass ich mich jetzt dumm fühle, nicht daran zu denken. Naja. Vielen Dank!
Jesse J

5
Es ist oft verlockend, Dinge komplizierter zu machen, als es sein muss :)
Adam Harte

2
elegante Antwort!
lathomas64

1

Ich bin mir nicht sicher, aber ich denke, dass Spiele wie UT2K4 eine Logik wie diese verwenden könnten:
wenn (schon gesprungen &&! Doppelt gesprungen, noch &&! Bodenberührung && Geschwindigkeit.up ist ungefähr 0.0f) DoDoubleJump ();

Wo oben ist deine y- oder z-Komponente (je nachdem, welche oben ist)
Dies bedeutet, dass dein Spieler nur dann einen Doppelsprung machen kann, wenn er sich auf der maximalen Höhe seines ersten Sprungs befindet und gerade dabei ist, wieder herunterzufahren.
Ich mag diese Methode, weil sie ein wenig Geschicklichkeit erzeugt (Sie müssen die Zeit dafür festlegen, dass sie innerhalb von "velocity.up is approximate 0.0f" abläuft).
Je nachdem, was Sie wollen, können Sie "ungefähr 0.0f" in Richtung positiver Zahlen verschieben, sodass diese beispielsweise nur beim Aufwärtsbewegen einen Doppelsprung ausführen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.