Ээээ. Ничего сложного, если известны координаты игрока.
Пример с картинки.
Если область видимости 2 клетки во все стороны, то получаем:
Код
$x = 54; //координаты игрока по оси x (горизонтальная ось)
$y = 54; //координаты игрока по оси y (вертикальная ось)
$upper_left_corner[x] = $x - 2;
$upper_left_corner['y'] = $y - 2;
// верхний левый угол имеет координаты 52/52
$upper_right_corner['x'] = $x + 2;
$upper_right_corner['y'] = $y - 2;
// верхний правый угол имеет координаты 56/52
$lower_left_corner['x'] = $x - 2;
$lower_left_corner['y'] = $y + 2;
// нижний левый угол имеет координаты 52/56
$lower_right_corner['x'] = $x + 2;
$lower_right_corner['y'] = $y + 2;
// нижний правый угол имеет координаты 56/56
Эти расчеты избыточны, для определения прямоугольной области видимости нам нужны только два угла - левый верхний и правый нижний (или наоборот).
Соответственно если нужно проверить находится ли точка с координатами M/N в области видимости:
Код
function is_visible($M, $N) {
if( $M > $upper_left_corner['x'] AND $M < $lower_right_corner['x'] ) {
if( $N > $upper_left_corner['y'] AND $N < $lower_right_corner['y'] ) {
return true;
}
}
return false;
}