lineOfSight
lineOfSight
> Funktionen
Überprüft die Sichtlinie zwischen der start-Zelle und der end-Zelle und ignoriert Entitäten im Array entityToIgnore.
Beispiel: if (lineOfSight(getCell(), getCell(enemy))
Der Algorithmus wird wie folgt beschrieben:
- Zeichnen Sie ein Segment zwischen den Mittelpunkten der beiden getesteten Zellen.
- Listen Sie die Zellen auf, die von diesem Segment gekreuzt werden. Eine Zelle gilt nicht als gekreuzt, wenn das Segment ihre Kante berührt oder ignoriert wird.
- Wenn nur eines dieser gekreuzten Felder ein Hindernis ist oder eine Entität enthält, ist die Sichtlinie blockiert, ansonsten ist sie frei.
Einstellungen
- Start: Startzelle.
- Ende: Zielzelle.
- entityToIgnore (optional): Zu ignorierende Entität oder Array von zu ignorierenden Entitäten, standardmäßig wird Ihre Entität ignoriert.
Rückmeldung
- los: (boolesch)
- "true", wenn die Sichtlinie frei ist;
- andernfalls "false".
Vorführung
Klicken Sie auf eine Zelle, um alle Zellen anzuzeigen, die sich in Sichtlinie mit ihr befinden.