lineOfSight
lineOfSight
> Funções
Verifica a linha de visão entre a célula start e a célula end, ignorando as entidades na matriz entityToIgnore.
Exemplo: if (lineOfSight(getCell(), getCell(inimigo))
O algoritmo é descrito da seguinte forma:
- Desenhe um segmento entre os centros das duas células testadas.
- Liste as células cruzadas por este segmento. Uma célula não é considerada cruzada se o segmento tocar sua borda ou se for ignorada.
- Se apenas uma dessas células cruzadas for um obstáculo ou contiver uma entidade, a linha de visão é bloqueada, caso contrário, é clara.
Configurações
- start: Célula inicial.
- fim: célula de destino.
- entityToIgnore (opcional): Entidade a ser ignorada ou array de entidades a serem ignoradas, por padrão, sua entidade é ignorada.
Opinião
- los: (booleano)
true se a linha de visão estiver limpa;
false caso contrário.
Demonstração
Clique em uma célula para exibir todas as células que estão em linha de visão com ela.