Ich versuche eine Gravitation zu erreichen, wo die Sendezeit eingeschlossen ist, und auch die Beschleunigung.
Ich habe es mit der üblichen Gravitation versucht, die ungefähr so aussieht:
Das würde wahrscheinlich gut genug für ein normales Jump'n'Run funktionieren, aber ich versuche ein Spiel zu machen, das von "Das Helikopterspiel" inspiriert ist, wo man durch einen Tunnel navigieren muss, ohne die Wände zu berühren > Was ich anders machen will, ist, dass ich auf dem Weg nach unten schneller fahren will, was auf dem Weg nach oben wieder verwendet wird, damit ich am Anfang etwas Beschleunigung habe.
Ich möchte auch eine Art von Sendezeit, also wenn Sie die Spitze drücken, würde es Sie nicht so schnell nach unten zwingen wie es wäre, wenn ich die Schwerkraft aus dem Codebeispiel verwendet hätte. Dieses Bild zeigt die Kurve, die ich würde gerne haben:
Bitte beachten Sie, dass die gesamte Steuerung durch einen Schlüssel erfolgt, also zB flieg hoch, wenn du den Raum gedrückt hältst, und tauche ab, wenn du ihn losgelassen hast.
Der Charakter bewegt sich auch niemals nach links oder rechts, da er eine statische X-Position auf dem Bildschirm hat, so dass Vektoren nicht verwendet werden können Ich habe stundenlang versucht, es zum Laufen zu bringen, aber w ohne Erfolg. Ich habe auch versucht, im Internet zu suchen, aber ohne Glück.
Das Spiel "Whale Trails" bekam die Schwerkraft, die ich irgendwie will.
Hier ist ein Link für ein Video des Spiels: Ссылка
Ich bin nicht so groß wie ein Physik-Typ, also wäre es cool, wenn du könntest geben Sie ein Beispiel für den tatsächlichen Code
Ich hoffe, dass jeder mir helfen kann, dies herauszufinden.
Schwerkraft ist die Kraft, die Objekte herunterzieht. Dein Spieler ist die Kraft, die Objekte hochzieht. Dementsprechend muss Ihr Code:
sein %Vor% Dies ist genug, um eine Kurve zu erstellen, wie Sie sie dargestellt haben. Natürlich muss POWER_OF_PLAYER
ein anderes Vorzeichen haben und der absolute Wert muss größer sein, damit dies funktioniert.
Die Energieeinsparung ist dann eine einfache Überprüfung.
%Vor% SOME_MINIMUM_SPEED_BEFORE_GETTING_POWER
sollte etwas kleiner oder gleich 0 sein.
P.S. Ich nahm an, dass deine Y-Achse am Boden beginnt und in den Himmel schießt. Zeichen setzen entsprechend.
Es sieht so aus, als ob die Geschwindigkeit des Fisches konstant ist.
Versuchen Sie Folgendes:
velocity
ist festgelegt und sollte sich nicht ändern (es sei denn, der Fisch frisst eine Geschwindigkeitssteigerung).
angle = 0
entspricht Levelflug.
Es hört sich so an, als würde man "Lift" einbauen, das auf horizontaler Geschwindigkeit basiert, und wenn der Knopf gedrückt wird, würde eine "noseup" -Bewegung ausreichend funktionieren.
Also wäre lift
eine Konstante k
multipliziert mit der horizontalen Geschwindigkeit Vx
und die vertikale Geschwindigkeit Vy
wäre die Differenz von gravity
und lift
mal die Änderung der Zeit dt
Wenn die Ebene (oder was auch immer) hochschnellt, senkt sie grundsätzlich die Geschwindigkeit auf einer Achse ab, während sie auf der anderen zunimmt.
Es wäre wahrscheinlich keine schlechte Idee, drag
auch dort irgendwo hin zu werfen, wenn ich darüber nachdenke, müsste von der absoluten Geschwindigkeit abhängen V = ( Vx**2 + Vy**2 )**0.5
... und Gewicht ist ein besseres Wort als Schwerkraft in diesem Fall (weniger verwirrend, Einheiten weise), aber es funktioniert, denke ich.
Nicht genau "Physik", sondern eine gute Annäherung, die ziemlich gut funktionieren sollte. Spiel mit den Werten von k herum und schau, ob du es machen kannst, was du willst.
BTW Entschuldigung für den übermäßig crappy psuedocode :-P