lineOfSight
lineOfSight
> Funciones
Comprueba la línea de visión entre la celda de inicio y la celda de fin, ignorando las entidades en la matriz entityToIgnore.
Ejemplo: if (lineOfSight(getCell(), getCell(enemy))
El algoritmo se describe de la siguiente manera:
- Dibujar un segmento entre los centros de las dos celdas probadas.
- Enumerar las celdas atravesadas por este segmento. Una celda no se considera cruzada si el segmento toca su borde o si se ignora.
- Si solo una de estas celdas cruzadas es un obstáculo o contiene una entidad, la línea de visión está bloqueada, de lo contrario, está despejada.
Configuraciones
- start: Celda de inicio.
- fin: Celda objetivo.
- entityToIgnore (opcional): Entidad a ignorar o matriz de entidades a ignorar, por defecto, su entidad es ignorada.
Retorno
- los: (booleano)
true si la línea de visión es clara;
falso en caso contrario.
Demostración
Haga clic en una celda para mostrar todas las celdas que están en la línea de visión con ella.