Wie können Sie in einem auf 2D-Physik basierenden Plattformspiel mit Leitern feststellen, ob der Spieler, der sich nach oben bewegt, durch einen Sprung oder das Klettern auf einer Leiter verursacht wird, sodass Sie wissen, welche Animation zu spielen ist?
Und im Allgemeinen reicht der Richtungsvektor offensichtlich nicht aus, um die abzuspielende Animation zu bestimmen: Wie bestimmen Sie auch die Ursache der Bewegung (damit Sie das richtige Sprite kennen)?
physics
sprites
movement
platformer
Paul Manta
quelle
quelle
Antworten:
Ich habe regelmäßig ein persönliches Logikproblem, das Sie hier auszudrücken scheinen. Es ist so, dass man manchmal die Logik und Programmierung aus der falschen Richtung betrachtet. In diesem Fall scheinen Sie nicht zu erkennen, dass Sie aufgrund des Logikcodes von Anfang an wissen, was passiert. Sie sollten programmgesteuert bereits wissen, ob er auf der Leiter ist oder nicht.
Denken Sie darüber nach (wie gesagt, ich habe oft dieses Problem). Die Spielelogik sollte wissen, dass Sie auf der Leiter stehen, vorausgesetzt, Sie sind ein intelligenter Programmierer. Zur besseren Erklärung habe ich einen Dateiarchivtyp und habe ungefähr eine Stunde am Tag damit verbracht, herauszufinden, wie man die Größe der Daten ermittelt. Ich habe nie aufgehört zu glauben, dass ich es jetzt lade, wenn ich die Datei lade kenne seine Größe: P.
Der Grund, warum dies so exklusiv ist, ist, dass Sie es als "Jetzt, wo ich in der Luft bin, wie finde ich heraus, ob ich auf einer Leiter bin oder springe?" Betrachten ... Wenn Sie es wirklich sollten denke "Ich bin im Begriff in die Luft zu kommen, aber mit welcher Methode ZUERST, damit ich es für die Animationen verwenden kann."
quelle
OnJump()
Ändern Sie Ihrenjumping
Booleschen Wert in "Wahr". Wenn Sie in der Luft sind undjumping
falsch sind, fallen Sie entweder auf eine Leiter usw.Das Physiksystem weiß weder, noch kümmert es sich darum, warum sich der Spieler in eine bestimmte Richtung bewegt. Es ist Ihr Spiel, das das Physiksystem veranlasst hat, den Spieler auf diese Weise zu bewegen, und es liegt daher in der Verantwortung Ihres Spiels, dies im Auge zu behalten. Die Spielerentität sollte einen Status haben, der anzeigt, ob sie springt, klettert, läuft usw. Sie sollten nicht versuchen, dies anhand der Ereignisse mit dem Physiksystem herauszufinden.
quelle
Es scheint, dass jedes Ereignis, das bei der Kollision ausgelöst wird, die die vertikale Geschwindigkeit des Spielers festlegt, auch verwendet werden kann, um ein Flag zu setzen, das angibt, welche Animation verwendet werden soll.
Wenn Sie eine Bibliothek eines Drittanbieters verwenden, deren Informationen zu restriktiv sind, können Sie die Leiter mit einem Rechteck umgeben. Wenn sich der Player nach oben bewegt und in diesem Rechteck enthalten ist, führen Sie die Kletteranimation durch.
quelle
Setzen Sie beim Einstellen der Sprunggeschwindigkeit auch den Zeichenstatus auf STATE_JUMPING. Auf diese Weise wissen Sie immer, in welchem Zustand sich der Spieler befindet, und können entsprechend handeln, indem Sie den Status des Spielers überprüfen.
quelle