lineOfSight
lineOfSight
> Funkcje
Sprawdza linię wzroku między komórką początkową a komórką końcową, ignorując elementy w tablicy entityToIgnore.
Przykład: if (lineOfSight(getCell(), getCell(enemy))
Algorytm jest opisany w następujący sposób:
- Narysuj odcinek między środkami dwóch testowanych komórek.
- Wypisz komórki przecinane przez ten segment. Komórka nie jest uważana za skrzyżowaną, jeśli segment dotyka jej krawędzi lub jest ignorowana.
- Jeśli tylko jedna z tych skrzyżowanych komórek jest przeszkodą lub zawiera istotę, pole widzenia jest zablokowane, w przeciwnym razie jest jasne.
Ustawienia
- start: Początkowa komórka.
- koniec: komórka docelowa.
- entityToIgnore (opcjonalnie): Jednostka do zignorowania lub tablica jednostek do zignorowania, domyślnie Twoja jednostka jest ignorowana.
Informacja zwrotna
- los: (logiczna)
true jeśli linia wzroku jest czysta;
fałsz w przeciwnym razie.
Demonstracja
Kliknij komórkę, aby wyświetlić wszystkie komórki, które są z nią w zasięgu wzroku.