Как прикинуть LOS и модификаторы укрытия персонажей-противников при стрельбе с верхних этажей?Немного теории. Итак, персонажа мы представляем на карте неким цилиндром диаметром 1'' на 1,8'' высоты. Любые этажи - 2''. Большинство объектов - высотой либо 1'', либо 2''. Значит 'глаза' нашего бойца находятся на
H1=(n-1)*2+1,8, где n - этаж, на котором он стоит.
Для примера это будет H1=(3-1)*2+1,8=5,8''
Теперь, прикиньте расстояние до загораживающего объекта. Расстояние мы считаем от поверхности цилиндра.
Для примера - это низкий бортик и расстояние до него приблизительно 1''. Высота бортика в глобальной системе будет равна 5'', считая от пола.
Так, мы получаем разницу высот dh=0.8'' и проекцию расстояния до загораживающего объекта равную 1''. Из них получим угол. arctan(0.8/1)=40 градусов или 0,7 радиан
Теперь для получения линии огня нам нужно разделить высоту H1 на тангенс нашего угла. То есть 5.8/tan(0.7) = 6.8''.
Затем получим расстояния для слепой зоны, heavy cover и light cover. Это соответственно 4 (H1-рост персонажа) / tan(0,7) = 4.7''; 4.9 (H1-половина роста персонажа) / tan(0,7) = 5.75''
Получаем: в пределах 4,7'' от вышки у персонажа 'слепая зона'. От 4.7'' до 5,7'' - цель в хэви кавере, от 5.7'' до 6.8'' - цель в легком укрытии.
Домашнее задание: посчитайте укрытия для стрельбы за дальний объект.Теперь начнем заново.
Что вам понадобится:
H1: высота вашего персонажа в глобальных координатах (N-1)*2+1.8, где N - этаж, на котором он стоит.
H2: глобальная высота того олуха, по которому вы хотите выстрелить. Считается так же.
D: расстояние до дальнего угла препятствия, которое, как вы считаете, может вам помешать. В проекции на плоскость карты.
Ho: глобальная высота этого препятствия.
CTan = В/(H1-Ho) - катангенс угла линии взгляда. Нужен для упрощения формул.
Что мы собираемся получить:
Blind zone - слепая зона, заступив за которую персонаж неуязвим для вашего огня.
Heavy cover - зона, ступив в которую считается, что видно меньше половины тела персонажа.
Light cover - зона, ступив в которую считается, что видно не всего персонажа, но больше половины.
Light cover = (H1-(H2-1.8))*CTan
Heavy cover = (H1-(H2-0.9))*CTan-0.5 - минус 0.5 берутся из-за того, что в предыдущих расчетах мы апроксимировали противника до линии, проходящей через его центр. Но в игре все расчеты ведутся до краев модели.
Blind zone = (H1-H2)*CTan-0.5 - если враг заступил сюда - стрелять уже невозможно.
Floors_cover.rename_to_xls.doc ( 23к )
Кол-во скачиваний: 303Переименуйте расширение файла в .xls - и у вас будет собственная расчетная программа для определения расстояний.
Однако! Понимайте, что ваши подсчеты намного менее точны, чем мои, а к небольшим изменениям расстояний (на 0.05'' вблизи) все числа очень чувствительны.