Timosh | Дата: Четверг, 30.03.2017, 21:14 | Сообщение # 1 |
Генералиссимус
Группа: Разработчик
Сообщений: 4089
Репутация: 234 []
Статус: Offline
| Как настраивать визоры техники? Разберемся на примере визоров Лиса Пустыни. В СтА ситуация близкая, в CW из-за большого количества визоров все разбито на макросы, но смысл все равно тот же. Файлы .inc могут называтсья по-разному.
Визор - это зона, при попадании в которую юниты противника становятся видны. Визуально отображается двумя степенями затемнения карты: полной и частичной. Зоны затемнения приблизительно отражают радиусы обнаружения танка и пехотинца, но только приблизительно - случаев слишком много. У врага отображается при щелчк на нем 9не во всех играх). Логически визор предсталяет собой сектор круга с центром в точке размещения визора и характеризуется раствором по горизонтали (по вертикали раствор не работает) и неким базовым радиусом обнаружения, который при домножении для коэффициенты для разных типо техники дает дальность обнаружения. Время обнаружения составляет около 1 секунды и к визорам не относится.
1. Настройка визора в модели. Точкой размещения визора служит любая кость, но обычно делают отдельный хелпер с именем Visor*. Он должен быть ориентирован в направлении оптической оси визора.
2. Настройка визора в дефе. Визор прописывается в блоке sensor {sensor {visor "main" ;имя визора, указывается в блоке placer, если за визор отвечает конкретный человек. {vision "tank_main-h"} ;собственно визор {bone "Visor1"} ;точка размещения }
Запись {vision "tank_gunner_optic_IR_3g"} указывает, какой именно визор использует танк. Они прописаны в set/vision, и мы идем туда.
3. settings.set Этот файл определяет классы видимости. Разные юниты имеют разную заметность, да еще могут быть более или менее заметны в зависимоти от того, движутся они, ползут или стреляют (и чем стреляют). Все перечислено в блоке terms {terms {firing_silent firing "welrod"} ;это категория - кто-то, кто стреляет из оружия с тагом "welrod" {human actor "human" } ;это насколько заметен человек в общем случае {vehicle_02 actor "vision_lev02"} ;для юнита с props "vision_lev02" справедливы настройки vehicle_02 {tankman2 breed "tankman2"} ;У конкретного брида может быт ьиная заметность. }
3. vision.set А вот тут как раз должны быть прописаны сами дальности для разных категорий. Но для удобства в этом файле только определены глобальные модификаторы радиуса и угла обзора. лучше их не трогать, если не хотите, чтобы все-все ваши визоры увеличились/уменьшились/расширились/сузились пропорционально.
4. mp.inc или single.inc В этом файле мы как раз и видим описания различных визоров. Ищем наш, tank_main-h
{"tank_main-h" {uncover 5} ;дальность обнаружения пехоты в кустах, насколько я знаю ("vision_optic" args 100) ;тут видим, что базовая дальность обзора 100, а коэффициенты перечислены в макросе "vision_optic" - см далее {h_fov 25} ;угол горизонтального обзора {v_fov 140} ;угол вертикального обзора (не работает, игнорировать) {wide 2.5} ;Это должно было быть отклонение сектора обзора от конуса - в итоге тоже не работает и использовать его не следует. Какой-то там серьезный баг есть. }
Ну, и последнее, с чем остается разобраться - это коэффициенты обнаружения, на которые домножается наш радиус.
5. generic.inc
(define "vision_optic" {radius %0} ;тут подставляется наш базовый радиус - 100м {rules ;и добножается на один коэффициент, который удовлетворяет правилу: {human 0.4 ;человек - 0,4*100=40м {firing 0.4} ;если человек стреляет - то все равно 100*0,4=40м {firing_silent 0.1} ;Но если стреляет из firing_silent - то 100*0,1=10м (см п. 3 - это Welrod) {tankman2 0.7} ;Но если человек-танкист, то 100*0,7=70м, комбез-то приметный. {cover 0.3 ;Человек в укрытии - уже 0,3, а не 0,4. {sniper 0.15} ;А если в укрытии снайпер - то вовсе 0,15 {stealth 0.1} ;А если с перком "stealth" - то 0,1 {stand 0.3} ;Если в укрытии стоя {squat 0.25} ;Если в укрытии сидя {crawl 0.2} ;Если в укрытии лежа } {squat 0.3 ;А это - если НЕ в укрытии, но сидя. {sniper 0.25} {stealth 0.25} } {crawl 0.2 ;не в укрытии лежа {still 0.15 ;А если не просто лежа, но и неподвижно - то не 0,2, а 0,15 {sniper 0.1} ;или менее для снайперов {stealth 0.05} ;и мастеров маскировки } {sniper 0.15} {stealth 0.1} } {still 0.35} ;Если не в укрытии, не сидя, не лежа (т. е. стоя), но неподвижно - не 0,4, а 0,35 }
{vehicle_02 0.7 ;Для техники класса видимости vehicle_02 (см пункт 3) - 0,7 {firing 0.95} ;Если стрелет - то 0,95 {visible 1} ;А вот этот пункт - это если техника уже обнаружена. Т. е. появится враг на расстоянии 70м, ;но если вздумает пятиться - исчезнет только на 100м. И вновь появится на дистанции 70м {still 0.6} ;Это если стоит на месте. }
} {mods ;Функционал неизвестен, просто копировать. {stand 1} }
)
|
|
| |