Ich arbeite an einem 2D-Spiel, in dem Sie Farbe verwenden, um einem Level Kacheln hinzuzufügen, und im Moment arbeite ich daran, Warp-Kacheln hinzuzufügen. Ich habe es so eingerichtet, dass bestimmte richtungsorientierte Farben zwei Punkte (Anfang und Ende) verwenden, um zu bestimmen, in welche Richtung die Kacheln zeigen (links, rechts, oben, unten). Die Kettkacheln haben diese Punkte, aber sie werden es sein zu zwei weiteren Listen hinzugefügt (Warp Start und Ende). Die Warps funktionieren wie folgt: Wenn der Spieler ein Plättchen trifft, wird er auf das entsprechende Warpplättchen teleportiert. Wenn ich das jetzt richtig zum Laufen bringen will, muss ich es schaffen, damit der Spieler nicht in eine Wand oder von der Karte teleportiert werden kann. Also muss ich den Punkt auf eine offene Kachel verschieben, genau einen Raum von den Wänden entfernt.
Was wäre der beste Weg, dies zu tun?
Antworten:
Wenn Sie nur sicherstellen möchten, dass die angeklickte Kachel offene Kacheln aufweist, würde ich einfach eine Funktion erstellen, die die Kacheln um sie herum überprüft. Und dann nenne das auf der angeklickten Kachel.
Sie können es in einer (verschachtelten) Schleife einrichten oder einfach if-Anweisungen dafür erstellen. Also im Pseudocode:
Bearbeiten basierend auf Kommentar
Es gibt zwei Möglichkeiten, wie Sie mit der Situation umgehen können:
quelle
Ich denke, Sie müssen das nächste "freie" Rechteck zu einem Warp-Plättchen finden, in das der Spieler passen kann.
Es gibt eine ähnliche Frage zum Stapelüberlauf. Klicken Sie hier, um zu sehen .
quelle