Es gibt eine Sache, die mich verblüfft hat, und die ist, wie man einen "Faux-Impulsed" -Sprung in einem Platformer umsetzt. Wenn Sie nicht wissen, wovon ich spreche, dann denken Sie an die Sprünge von Mario, Kirby und Quote from Cave Story. Was haben Sie gemeinsam? Nun, die Höhe Ihres Sprungs hängt davon ab, wie lange Sie die Sprungtaste gedrückt halten.
Zu wissen, dass die 'Impulse' dieser Charaktere nicht wie in der Physik vor ihrem Sprung erzeugt werden, sondern in der Luft - das heißt, Sie können Ihren Finger sehr gut auf halber Höhe heben, und es wird aufhören, selbst wenn mit Abbremsen zwischen ihm und dem Punkt; Aus diesem Grund kann man einfach auf einen Sprung tippen und ihn für einen Weitsprung halten - ich bin fasziniert davon, wie sie ihre Flugbahnen als Bögen halten.
Meine aktuelle Implementierung funktioniert wie folgt:
Während die Sprungtaste gedrückt wird, wird die Schwerkraft ausgeschaltet und die Y-Koordinate des Avatars wird um den konstanten Wert der Schwerkraft verringert. Wenn beispielsweise die Anzahl der Z-Einheiten pro Tick sinkt, steigt die Anzahl der Z-Einheiten pro Tick.
Sobald der Knopf losgelassen wird oder das Limit erreicht ist, verlangsamt sich der Avatar um einen Betrag, der X Einheiten überdeckt, bis seine Geschwindigkeit 0 erreicht. Sobald dies der Fall ist, beschleunigt es, bis seine Geschwindigkeit der Schwerkraft entspricht. Wenn wir uns an das Beispiel halten, könnte ich sagen, dass es von 0 auf Z Einheiten / Tick beschleunigt, während es immer noch X Einheiten abdeckt.
Diese Implementierung bewirkt jedoch, dass die Sprünge zu diagonal sind. Wenn die Geschwindigkeit des Avatars nicht höher ist als die Schwerkraft, würde dies in meinem aktuellen Projekt zu schnell sein (es bewegt sich mit etwa 4 Pixel pro Tick und die Schwerkraft beträgt 10 Pixel pro Tick) eine Bildrate von 40 fps), macht es auch mehr vertikal als horizontal. Diejenigen, die mit Plattformspielern vertraut sind, würden bemerken, dass der Bogen des Charakters sie fast immer weiter springen lässt, selbst wenn sie nicht so schnell sind wie die Schwerkraft des Spiels, und wenn er nicht richtig gespielt wird, würde er sich als solcher erweisen sehr kontraintuitiv. Ich weiß das, weil ich bestätigen konnte, dass meine Implementierung sehr ärgerlich ist.
Hat jemand schon einmal versucht, eine ähnliche Mechanik zu entwickeln, und hat es vielleicht sogar geschafft? Ich würde gerne wissen, was hinter dieser Art von Plattformspringen steckt. Wenn Sie noch nie zuvor Erfahrungen damit gesammelt haben und es ausprobieren möchten, versuchen Sie bitte nicht, meine erläuterte Implementierung zu korrigieren oder zu verbessern, es sei denn, ich war auf dem richtigen Weg - versuchen Sie, Ihre Lösung aus zu erstellen kratzen. Es ist mir egal, ob Sie Schwerkraft, Physik oder so etwas verwenden, solange es zeigt, wie diese Pseudo-Impulse funktionieren, macht es den Job.
Außerdem möchte ich, dass die Präsentation eine sprachspezifische Kodierung vermeidet. Teilen Sie uns ein C ++ - Beispiel oder Delphi. So oft ich das XNA-Framework für mein Projekt verwende und C # -Stoffe nicht stört, habe ich nicht viel Geduld, um den Code anderer zu lesen, und ich bin es auch Bestimmte Spieleentwickler anderer Sprachen sind an dem interessiert, was wir hier erreichen. Halten Sie sich also bitte an den Pseudocode.
Danke im Voraus.