Здравствуйте, нужно заполнить объект инициализации так чтобы стена не прошивалась любым калибром. Заранее спасибо
Непробиваемость стен
#1 OFFLINE
Отправлено 25 April 2018 - 13:54
#2 OFFLINE
Отправлено 25 April 2018 - 15:33
#3 OFFLINE
Отправлено 25 April 2018 - 16:20
За пробиваемость отвечает материал, который вешается на компоненты в лоде FireGeometry самой модели, так что без модификации самой модели ни как.
Как вариант, в обжектбилдере делаете объект, размером со стену, не видимый, то есть прикрутить в визуальный лод прозрачную текстуру, столько объектов, сколько нужно, конкретных размеров, создаёте супер-пупер не пробиваемый материал физики, и вешаете на эти объекты в лоде FireGeometry, в редакторе армы лепите на стены эти объекты.
Получаете удовольствие.
Примеры материалов здесь
\a3\data_f\Penetration
Сообщение отредактировал SteelRat: 25 April 2018 - 16:24
#4 OFFLINE
Отправлено 25 April 2018 - 16:32
Arma 3Arma 3Arma 3, скриптами невозможно обеспечить 100% непробитие для объекта, который можно пробить, для 100% гарантии придется переделывать сам объект
Можно попытаться поиграться с этими хандлерами прикрученными к целевому объекту
EpeContact EpeContactStart EpeContactEnd
на предмет отследить момент столкновения двух физических геометрий, и при контакте, удалить пулю-снаряд-термоядерный заряд.
Сообщение отредактировал SteelRat: 25 April 2018 - 16:36
#5 OFFLINE
Отправлено 25 April 2018 - 17:50
Перепробовал все обработчики (Эти не пробовал, но думаю эффект будет такой же) и столкнулся с такой проблемой:на предмет отследить момент столкновения двух физических геометрий, и при контакте, удалить пулю-снаряд-термоядерный заряд.
Все команды, который я использовал, (Изменения позиции и удаления) имеют эффект только на следующем кадре, следовательно, если объект стоит близко к этой стене (На расстоянии, которое пуля пролетит за один кадр), то он получает урон, если дальше - нет, т. к. пуля исчезает к этому кадру.
По идее можно решить при помощи каких-нибудь переменных и комбинацией обработчиков на стене и объекте, но тут я не знаю гарантирует ли движок последовательность вызовов обработчиков: обработчик попадания в стену >> обработчик попадания в объект
#6 OFFLINE
Отправлено 25 April 2018 - 20:14
Ну это как бы весьма важный процесс на уровне движка, то есть физика столкновений, так что с кадрами там я думаю лады будут.
Тут вопрос в другом, поймает ли стена дома контакт от пули, например когда я развлекался с этими хандлерами, они не определяли столкновение объектов с персом.
#8 OFFLINE
Отправлено 26 April 2018 - 02:20
// Массив "плохих" пуль badBullets = []; // Для каждой требуемой стенки добавляем в глобальный массив badBullets все пули, от которых будет спасаться wall addEventHandler [ "HitPart", { badBullets append (_this apply { private _projectile = _x select 2; deleteVehicle _projectile; [_x select 1, (_x select 6) select 4, _projectile]; }); } ]; // Для каждого объекта, который в обязательном порядке должен быть защищен от этого прострела, // переопределяем урон если данные источника урона совпали с хотя бы одной пулей в массиве badBullets target addEventHandler [ "HandleDamage", { private _toFind = [_this select 3, _this select 4]; if ((badBullets findIf { (_x select [0, 2]) isEqualTo _toFind; }) != -1) then { 0.0; }; } ]; // Чистим устаревшие пули addMissionEventHandler [ "EachFrame", { badBullets = badBullets select { !isNull (_x select 2); }; } ];
Ну и конечно если не нужна такая гарантия (Если стоять близко к стене, то урон будет наноситься), то:
wall addEventHandler [ "HitPart", { { deleteVehicle (_x select 2); } forEach _this; } ];
Сообщение отредактировал vlad333000: 26 April 2018 - 02:30