Gibt es eine vernünftige einfache Möglichkeit, die Freizügigkeit in einem kachelbasierten isometrischen Spiel zu implementieren? Dies bedeutet, dass der Spieler nicht sofort von einem Plättchen zum anderen springt oder nicht am Raster "eingerastet" wird (zum Beispiel, wenn die Bewegung zwischen den Plättchen animiert wäre, Sie aber vor Abschluss der Animation daran gehindert wären, etwas zu tun). Ich bin ein Anfänger in Sachen Spielprogrammierung, aber mit Hilfe dieser Seite und einiger anderer Ressourcen war es ziemlich einfach, die grundlegenden Dinge zu erledigen, aber ich konnte keine nützlichen Ressourcen für dieses spezielle Problem finden .
Derzeit habe ich etwas in der Nähe davon improvisiert: http://jsfiddle.net/KwW5b/4/ (WASD-Bewegung). Die Idee für die Bewegung war, mithilfe der Mauskarte zu erkennen, wann der Spieler zu einem anderen Plättchen gewechselt ist, und dann die Offsets umzudrehen. Zum größten Teil funktioniert es korrekt (jede Ecke bringt den Spieler dazu, sich an einen falschen Ort zu bewegen: siehe http: //www.youtube.com/watch?v=0xr15IaOhrI , was wahrscheinlich daran liegt, dass ich die vollständige Mauskarte nicht richtig zum Laufen bringen konnte), aber ich habe keine Illusionen, dass es sogar einer guten / vernünftigen Lösung nahe kommt. Außerdem geht es meistens nur darum zu demonstrieren, was für eine Sache ich implementieren möchte.
quelle
Antworten:
Zunächst schlage ich vor, dass Sie die Richtung ändern von: W - oben links S - unten rechts A - unten links D - oben rechts
intuitiver: W - hoch S - runter A - links D - rechts
In Bezug auf Ihr Anliegen schlage ich vor, dass Sie zwei Funktionen ausführen, von denen eine isometrische Kachelkoordinaten in Gitterkoordinaten übersetzt und die andere umgekehrt. Auf diese Weise könnten Sie MVC einfach trennen und es würde Ihnen das Leben erleichtern, wenn Sie aktive Kacheln berechnen:
quelle
Wenn ich das verstehe, soll der Spieler von Kachel zu Kachel gehen, aber ohne zu springen. Sie können:
1- Beginnen Sie mit Kachel t0 und versetzen Sie 0
2- Wenn der Spieler zum Plättchen t1 wechselt, setze den Versatz = - (t1 - t0)
3- Wenn bei der Player-Aktualisierung der Offset nicht 0 ist, verringern Sie die Aktualisierungszeit und die Player-Geschwindigkeit.
4- Sie können die Offset == 0-Prüfung verwenden, um festzustellen, wann sich der Spieler auf dem Plättchen befindet.
Damit erhältst du einen Spieler, der sich frei auf der Karte bewegt, sich aber an die Kacheln hält.
quelle