Ich versuche zu berechnen, welche Kacheln eine bestimmte Einheit "sehen" kann, wenn sie auf einer Kachelkarte in eine bestimmte Richtung zeigen (innerhalb eines bestimmten Bereichs und Winkels der Ausrichtung). Am einfachsten wäre es, eine bestimmte Anzahl von Kacheln nach außen zu ziehen und auf jede Kachel einen Raycast zu senden. Ich hoffe jedoch auf etwas effizienteres. Ein Bild sagt mehr als tausend Worte:
Der rote Punkt ist die Einheit (die nach oben zeigt). Mein Ziel ist es, die gelben Kacheln zu berechnen. Die grünen Blöcke sind Wände (Wände sind zwischen Kacheln und es ist einfach zu prüfen, ob Sie zwischen zwei Kacheln hindurchgehen können). Die blaue Linie stellt so etwas wie die "Raycast" -Methode dar, von der ich gesprochen habe, aber ich möchte dies lieber nicht tun müssen.
BEARBEITEN: Einheiten können nur nach Norden / Süden / Osten / Westen ausgerichtet sein (0, 90, 180 oder 270 Grad) und FoV ist immer 90 Grad. Sollte einige Berechnungen vereinfachen. Ich denke, es gibt eine Art rekursiven / stapelbasierten / warteschlangenbasierten Algorithmus, aber ich kann es nicht ganz herausfinden.
Vielen Dank!
Antworten:
Ja, ich habe eine Forschungsarbeit gefunden!
In Bezug auf die Rechenkosten scheint Shadow Mapping ein klarer Gewinner zu sein.
Algorithmus gefunden werden kann hier und eine C # -Implementierung kann gefunden werden hier relevante Bit unten.
quelle