Mir fallen dazu folgende Lösungswege ein:
Weg A: Die "collision map"
Du erstellst dir zusätzlich zu deiner Minimap (1) noch eine "collision map" (2 auf meiner angehängten Grafik). Das ist einfach ein Bild, das nur aus Schwarz (RGB #000000) und Weiß (RGB #FFFFFF) besteht. Schwarz steht dann z.B.: für "verbotenes" Gebiet, das nicht betreten werden kann, weil dort eventuell ein See liegt oder andere Hindernisse den Weg blockieren.
Dann musst du einfach nur nach der Abbildung in meinem letzten Beitrag vorgehen und zusätzlich überprüfen, ob an der Teleport-Koordinate auf der collision map ein schwarzes oder ein weißes Feld liegt und eine Entscheidung treffen. (Die kann man einfach als Array laden und dann die Werte vergleichen)
Weg B: Dreiecke
Ansonsten könntest du diese "verbotenen" Gebiete mit Hilfe von Dreiecken markieren (3) und überprüfen, ob der Punkt, an den der Spieler teleportiert werden soll, innerhalb eines dieser Dreiecke liegt.
Das geht z.B. indem man bei einem Dreieck mit den Punkten A, B und C und der gewünschten Teleport-Koordinate P die Vektoren AP, AB und AC bildet. Dann stellt man das als Linearkombination dar:
AP = s * AB + k * AC
Jetzt berechnet man z.B. mit dem Gauss-Verfahren s und k.
Wenn die reellen Zahlen s und k folgende Bedingungen erfüllen, liegen sie innerhalb des Dreiecks:
0 < s,k < 1 und 0 < s+k < 1
Wie das ganze für n-Ecke mit n > 4 aussieht, kann ich gerade leider nicht sagen.