lineOfSight
lineOfSight
> Funktioner
Kontrollerar siktlinjen mellan start-cellen och slut-cellen, och ignorerar entiteter i entityToIgnore-matrisen.
Exempel: if (lineOfSight(getCell(), getCell(fiende))
Algoritmen beskrivs enligt följande:
- Rita ett segment mellan mitten av de två testade cellerna.
- Lista cellerna som korsas av detta segment. En cell anses inte vara korsad om segmentet vidrör dess kant eller om det ignoreras.
- Om bara en av dessa korsade celler är ett hinder eller innehåller en entitet, är siktlinjen blockerad, annars är det klart.
Inställningar
- start: Startcell.
- slut: Målcell.
- entityToIgnore (valfritt): Entitet att ignorera eller en rad enheter att ignorera, som standard ignoreras din entitet.
Respons
- los: (booleskt)
- "sant" om siktlinjen är fri;
- "falskt" annars.
Demonstration
Klicka på en cell för att visa alla celler som är i siktlinje med den.