Что же, одностороннее стекло у нас уже есть (читайте об этом в
предыдущем материале данной главы). Теперь сделаем его бьющимся. Для
этого 1-ое стекло, у которого 1 сторона окрашена текстурой
{BLUE, превратим из
func_wall в
func_breakable (выбираем в 3D-виде, жмём Alt-Enter и в списке выбираем func_breakable).
Теперь выставим свойства:
Name — glass1 (название стекла, укажите обязательно);
Material type — Glass;
Strenght — 50 (в данном случае прочность, сила стекла не важна; об этом чуть далее);
Render Mode — Solid;
FX Amount — 255
Как видно, параметры отображения прежние. Теперь выделяем второе стекло, которое полностью окрашено текстурой
GLASSGREEN. Также превращаем в
func_breakable и выставляем следующие свойства:
Name — glass1 (обязательно точно такое же название, как и у 1-ого стекла);
Material type — Glass;
Strenght — 50 (прочность);
Render Mode — Texture;
FX Amount — 70 (прозрачность от 0 до 255, чем ближе к 0, тем стекло прозрачнее и наоборот)
Вот, кажется, и всё? Загружай карту и разбивай стекло. Но не всё так
просто. Стекла-то у нас два, а поэтому, и разбивать нужно два стекла, а
игрок-то в полной уверенности, что стекло одно. Разбив одно из стекол,
игрок с удивлением обнаружит 2-ое и поймет, что его жестоко обманули :-)
Наша задача состоит не только в том, чтобы игрока обмануть, но и чтобы
он обмана не заметил :-) Вот собственно поэтому нужно чтобы 2 стекла
разбивались одновременно, когда игрок разбивает только одно из них.
Перейдем к реализации этой идеи. Посмотрите на картинку ниже.
Прерывистой линией обозначен новый объект, который мы сейчас сделаем. Это тоже
func_breakable.
Размеры у данного энтити-объекта точно такие же, как и у стекол, только
по толщине немного шире (шире чем оба стекла вместе взятые).
Закрасим все стороны данного нового
func_breakable текстурой
{BLUE.
На картинке ниже данный объект показан в 3d-виде (стекол не видно, так
как новый энтити-объект толще обоих стёкол вместе взятых).
Свойства
func_breakable следующие:
Target on break — glass1 (вписываем сюда название 2-ух стекол, оно одинаковое);
Material type — Glass;
Strenght — 1 (прочность*);
Render Mode — Solid;
FX Amount — 255
Вот и всё! Теперь на самом деле игрок будет разбивать вовсе не стекла, а наш новый совершенно невидимый энтити-объект
func_breakable.
А тот, в свою очередь, мгновенно разобьет оба стекла сразу. Стёкла
разбиты, игрок обманут, трюк работает, можно и пивка попить :-)
* Желаемую прочность (силу) стекол нужно выставлять в параметре
Strenght именно нового объекта
func_breakable.
Понятно, что игрок будет стрелять не в стекла, а в данный прозрачный
энтити-объект, поэтому прочность самих двух стекол в расчёт не
принимается.
Как говорила несколько лет назад в одной рекламе певица Валерия: «результат налицо»:
Вот и всё. Создание стёкол мы рассмотрели.
oneway_glass_32.zip [15Кб] — в архиве карта-пример в форматах BSP и RMF.