четверг, 30 апреля 2015 г.

Вроде бы и дал себе слово писать в блог почаще, но опять - задержка вышла. Долго пилил модель повреждений для самолетов. Опять задействована функция childrenRecursive и "СилаБукв". Сначала удалось создать схему "уничтожения" отдельных частей самолета. А именно - при сбитии сносится часть крыла и стабилизатор. И вот тут встал вопрос - что делать с пилонами на крыльях? Дело в том, что иерархия моих юнитов имеет две ветви. одна - это сами пилоны и оружие, парентящиеся к центру самолета (его роль выполняет объект с именем "семейство"CntAircraft), вторая ветка - "отделяемая". Она тоже парентится к центру самолета и вызывается только при высоком уровне детализации. Но именно огна и создает красивую картинку. Пилоны же и оружие с ней не связаны. Поэтому, пришлось принять меры. Проблем для МиГ-23/27 и F-15 не было - потому как у них подкрыльевые пилоны очень близки к фюзеляжу. Но вот F-5 и F-16, да и будущие МиГ-21/29, Су-27 и его клоны, имеют крылья, буквально "обвешанные" пилонами подвески вооружения. Самое же пакостное заключалось в том, что пилоны имеют разный облик, так что просто объединить их с "отрезаемой" частью крыла не получится. Поэтому пришлось пойти на компромисс. сделать не объединенный пилон из двух объектов, а два отдельных - правый и левый. При сносе крыла проводится проверка, какое крыло сносится и соответственно, убираются объекты, с этим крылом связанные (не парент). И движки оружия парентятся теперь не к центру юнита, а к этим правым и левым пилонам.
Сам же процесс появления поврежденных частей самолета таков - циклом проверяются объекты в списке типа листДамагед, если у них нет в имени сочетания букв DMG, то вызывается их двойник с текстурой повреждения и парентится к ним же (это важно, поскольку поврежденные самолеты могут иметь вполне работающую механизацию). Сами же "породители" "поврежденных" остаются на месте, но становятся невидимыми. Да, это приводит к увеличению объектов, я это прекрасно понимаю. Но полностью подчинить себе процесс замены мешей не удалось, а любоваться на истерику консоли, сообщающей о некорректном поведении только что созданных новых мешей (Откуда??!!) не хочется. Про "снос" деталей я уже писал выше. Высокий уровень детализации держится недолго в игре, а при сбитии горящий самолет обычно живет недолго. Далеко не все успевают взорваться от столкновения с землей. Поврежденные же самолеты, если они выходят из боя и не находятся в поле зрения камеры внешнего обзора, через некоторое время убираются, поскольку тратить на их просчет время и ресурсы - нет смысла. Это не наземка, скорости там куда как выше.
Кстати, о наземке. Начал писать скрипт движения для наземной техники. поскольку схема ЛОДов и повреждений уже более-менее отработана, надеюсь применить ее и в этом случае. Поработать, конечно, придется... а теперь скрин с картинкой - сбитый Ф-15 с пробоинами в уцелевшем крыле...



Комментариев нет:

Отправить комментарий