Ledge Climbing Animation und Bewegung (2d Platformer)

11

Es fällt mir schwer, eine Entscheidung über die Implementierung einer Leistensteigmechanik für einen physikgetriebenen 2D-Plattformer zu treffen. Was ist der beste Weg, um dies zu erreichen, ohne dass es zu komplex wird?

Bisher verstehe ich (Hobbyist hier kein Profi) einige Optionen, darunter:

  1. Wenden Sie kontrollierte Kraft auf den starren Körper auf der y-Achse an, bis die Wurzelposition knapp über der Handposition liegt, und üben Sie dann genügend Kraft auf die x-Achse aus, so dass der Charakter auf der Plattform steht. Gleichzeitig synchronisieren Sie dies irgendwie mit den Kletteranimationen.

    Anmerkungen : Die Bewegung ist hier einfach und kann sogar durch ein prismatisches Gleitgelenk gesteuert werden, aber ich bin mir nicht sicher, wie ich die Animationen (Wirbelsäule) mit der Bewegung synchron halten würde.

  2. Root-Bewegungsanimation, die die Root-Position des Charakters bestimmt. Teleportieren Sie den starren Körper, wenn er fertig ist, und hoffen Sie, dass box2d rechtzeitig auf eine Kollision reagieren kann, wenn Objekte vom Himmel fallen.

    Anmerkungen : Klingt einfacher zu animieren, ist sich aber nicht sicher, ob ich Probleme mit der Wirbelsäulenlaufzeit, Box2d oder höher auf der ganzen Linie, beweglichen Plattformen und Plattformen mit unterschiedlicher Höhe habe.

  3. Wenden Sie die IK-Einschränkung programmgesteuert auf die Hände an, um sie zu fixieren, und drehen Sie die Knochen manuell oder wenden Sie kleine voreingestellte Animationen (wenige Tasten / Rahmen) an, während Sie gleichzeitig die erforderliche Kraft auf den starren Körper ausüben.

    Anmerkungen : Dies scheint dem Spieler maximale Kontrolle zu geben, aber es klingt für mich viel zu kompliziert, es auf meinem Niveau zu implementieren, nicht genau sicher, wo ich anfangen würde.

Vielen Dank im Voraus für jede Eingabe!

Zu Ihrer Information: Dies ist eine ECS-basierte (libgdx + ashley) Engine mit box2d. Der Sims Grab ist bereits als separates System implementiert, sodass wir hier davon ausgehen können, dass der Charakter bereits an einem Sims beliebiger Höhe hängen kann.

Adrian
quelle

Antworten:

1

Ich glaube, Sie brauchen hier mehr Designoptionen, bevor Sie eine richtige Entscheidung treffen können, insbesondere, was kann mit dem Charakter passieren, während er hängt / klettert?

Da Sie sagten, dass das Spiel auf Physik basiert, gehe ich davon aus, dass beim Hängen oder Klettern möglicherweise ein Stein auf Ihren Kopf fällt. Wenn dies der Fall ist, glaube ich, dass Rootmotion die einfachste Lösung ist, müssen Sie nur das Klettern animieren Während des Kletterns befindet es sich in einem etwas anderen hängenden Zustand. Der einzige Unterschied besteht darin, dass Sie die Kletteraktion nicht starten können.

Dies setzt voraus, dass Sie die gesamte Hängesituation unter Kontrolle haben. Wenn Sie also hängen und eine Interaktion stattfindet, reagiert der Charakter richtig.

Dann müssen Sie nur noch den Status Ihres Charakters auf Leerlauf setzen, sobald die Kletteranimation abgeschlossen ist.

Brian H.
quelle
0

Sie können die Transformation einfach n-mal nach oben bewegen, bis die Füße auf dem Sims stehen, und die Physik vorübergehend vergessen. Ich denke, es wird gut funktionieren. Sie können immer den Abstand zwischen fallenden Objekten und dem Spieler messen, falls die Kollision währenddessen fehlschlägt eine Transformationsübersetzung. um sicherzustellen, dass eine Kollision auftritt ..

Joe Shmoe
quelle
0

Wenn der Spieler gegen ein kletterbares Objekt gedrückt wird, lassen Sie es auf der Y-Achse nach oben / unten bewegen. Stellen Sie in diesem Zustand sicher, dass es sich nicht auf der X-Achse bewegen kann. Während Sie sich bewegen, können Sie Animation aufrufen. Beispiel für Ihre Steiganimation, um sicherzustellen, dass der Punkt in der Animation mit der zurückgelegten Strecke übereinstimmt, anstatt zu versuchen, alles zu messen.

Peter Morris
quelle
0

Meiner Meinung nach wäre der "beste" Weg: Wenn Sie feststellen, dass Klettern möglich ist, sperren Sie vorübergehend die Position des Spielers. Verwenden Sie die Animation mit Root-Bewegung und sperren Sie die Steuerelemente. Wenn die Animation beendet ist, entsperren Sie die Position und die Steuerung des Spielers.

Wenn Sie es rücksichtslos tun, wird es natürlich seltsam aussehen ODER es erfordert pixelgenaue Präzision. Aber Sie können es vermeiden - geben Sie dem Spieler eine Reichweite, in der er klettern kann, und passen Sie die Position mit einem Lerp schnell an den perfekten Ort an.

lilKriT
quelle
0

Kann sich der Spieler in der Luft frei horizontal bewegen (Luftsteuerung)? In diesem Fall würde ich einfach eine angemessene vertikale Kraft anwenden, um die Füße des Spielers über die Plattform zu bringen und den Spieler horizontal darauf bewegen zu lassen.

Dies würde dem Spieler mehr Kontrolle über den Charakter geben und mehr Bewegungsoptionen eröffnen. Wenn der Spieler beispielsweise (während er an einem Felsvorsprung hängt) springen wollte, auf etwas auf der Plattform schießen, dann wieder nach unten fallen und das wieder greifen wollte Leiste, während das Projektil zu seinem Ziel reiste, um allen Projektilen auszuweichen, die das Ziel auf den Spieler zurückgeschossen hatte. Eine solche Taktik könnte zu einer interessanten Bosskampfstrategie führen.

Agent Tatsu
quelle