Ich würde hoffen, dass wir alle Zelda: A Link to the Past gespielt haben. Bitte korrigieren Sie mich, wenn ich mich irre, aber ich möchte diese Art von 2D-Bewegung von oben nach unten mit einem Hauch von Korrektur emulieren. Es ist in anderen Spielen gemacht worden, aber ich denke, dass dieser Verweis am einfachsten ist, sich darauf zu beziehen. Die Art der Bewegung und Korrektur, von der ich spreche, ist:
- Schwimmende Bewegung, die nicht auf fliesenbasierte Bewegungen wie Pokémon und andere Spiele beschränkt ist, bei denen Sie mit einem Fingertipp auf das Bewegungsfeld ein Feld in diese Hauptrichtung bewegen. Diese Schwimmbewegung sollte in der Lage sein, eine diagonale Bewegung zu erreichen.
- Wenn Sie nach Westen gehen und zu einer Wand kommen, die nach Nord-Ost- / Süd-West-Art diagonal verläuft, werden Sie zu einer Süd-West-Bewegung korrigiert, auch wenn Sie weiterhin links (West) auf dem Controller gedrückt halten. Dies sollte für beide Diagonalen funktionieren und in beide Richtungen korrigieren.
- Wenn Sie ein paar Pixel davon entfernt sind, eine Tür oder einen Flur zu betreten, werden Sie korrigiert, indem Sie durch die Halle oder den Flur gehen, dh wenn Sie gegen eine Ecke stoßen, werden Sie in die Halle / Tür gedrückt.
Ich habe nach effizienten Wegen gesucht, um dies zu erreichen, und hatte kein Glück. Um klar zu sein, ich spreche von der Bewegung der menschlichen Figur, nicht von der Bewegung eines NPC. Stehen ihre Ressourcen für diese Art von Bewegung zur Verfügung? Gleichungen oder Algorithmen in einem Wiki erklärt oder so?
Ich verwende das XNA Framework. Gibt es irgendetwas, das dabei hilft?
Eine mögliche Antwort für den zweiten Punkt ist die Projektion des Bewegungsvektors des Spielers entlang des Wandvektors unter Verwendung eines Punktprodukts (ab * normalisiert (b)). Sie erhalten dann einen Vektor, der angibt, wie weit der Spieler in Richtung der Wand bewegt werden soll. Wenn Sie den Spieler um diesen Vektor bewegen, erhalten Sie einen „Schlitten“ entlang der Wand. Hat in einem früheren Spielprojekt gut für mich funktioniert.
quelle
Tolle Antwort für Josh, aber ich werde ein paar Vorschläge hinzufügen: - Weitere Informationen zum Rutschen an Wänden finden Sie in meiner Frage. - Aufgrund dieser Antwort habe ich es geschafft, dass es wirklich gut funktioniert. - Wenn ich mich nicht irre, kann Link beim Aufwärtsgehen des Bildschirms leichter auf das nächstgelegene horizontale Gitterquadrat ausgerichtet werden. Auf diese Weise sind Sie beim Erreichen der Türen mit größerer Wahrscheinlichkeit richtig aufgestellt (möglicherweise falsch). - Stellen Sie sicher, dass die Kollisionsbox Ihres Charakters viel kleiner als die Breite der Tür ist, damit Sie leicht durch Türen gelangen.
quelle
Zur Korrektur von Eingangstüren können Sie das Kollisionsobjekt für die Tür etwas größer als das Bild der Tür machen. Dies würde zu demselben Effekt führen, den Josh vorgeschlagen hat, ohne jedoch die Nähe zum Kollisionsrechteck der Wand berechnen zu müssen.
quelle