In etwa so (Pseudocode):
Speichere die Position des Actors in Variablen.
Speichere die TerrainID anhand der Position des Helden in eine weitere Variable.
Wenn die TerrainID der "Kante Oben" entspricht & der Actor nach oben schaut
Rechne Actor Y Pos - 2 (+ für unten)
Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach oben springen, sofern die vorherige Bedingung erfüllt.
Analog für Unten.
Wenn die TerrainID der "Kante Rechts" entspricht & der Actor nach rechts schaut
Rechne Actor X Pos + 2 (- für links)
Überprüfe nun, ob die Terrain ID einer Kante entspricht, auf die man springen kann, indem die Terrain ID anhand der Position des Actors erneut gesetzt wird.
Wird die Pfeiltaste oben eine Zeit lang gedrückt, so lasse den Helden zwei Felder nach links springen, sofern die vorherige Bedingung erfüllt.
Analog für Links
Bei einer Kante mit zwei oder bei einer Platform mit vier möglichen Richtungen setzt du innerhalb der Bedingung für die Terrain ID noch die entprechenden einzelnen Bedingungen für die FaceDir des Helden.
Im Prinzip ähnlich. Nur muss der Maker wissen, ob du vor einer Wand stehst. Dann musst du halt eine Abfrage machen, bei der
die Terrain ID des Feldes vor dem Helden bestimmt wird.
Also noch eine Terrain ID für "Wand" bestimmen. Dann müsstest du nur abfragen, wenn du vor einer Wand stehst, ob ein Feld darüber direkt ein begehbares Feld ist, das musst du leider auch per Terrain ID bestimmen.
Also nicht passierbare Tiles sollte man dann noch per Terrain ID extra bestimmen
Ich kann mich ja selbst mal an das Problem heransetzen, dürfte nicht so extrem lange dauern.
...