Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава XI. Стекла.

§ 11.3 Стекло прозрачное с одной стороны (бьющееся)

В этой статье мы продолжим наши эксперименты c односторонними стеклами и сделаем их разбиваемыми. Если Вы хорошо усвоили материал предыдущей статьи и поняли, как работает трюк с односторонним стеклом, то никаких проблем у Вас не возникнет. Статья взята с сайта http://countermap.counter-strike.net/Tutorials. Благодарим автора: Sam.

Итак, одностороннее стекло у нас уже есть. Теперь сделаем его разбиваемым. Для этого первое стекло, у которого одна сторона покрашена текстурой {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 (обязательно точно такое же имя, как и у первого стекла);
Material type - Glass;
Strenght - 50 (прочность);
Render Mode - Texture;
FX Amount - 70 (прозрачность от 0 до 255, чем ближе к 0, тем стекло прозрачнее)

Казалось бы, все - запускай игру и разбивай стекло. Но не все так просто. Стекла-то у нас два, следовательно, и разбивать надо 2 стекла, а игрок-то в полной уверенности, что стекло одно. Разбив одно из стекол, игрок с удивлением обнаружит второе и поймет, что его жестоко обманули :)

Наша задача состоит не только в том, чтобы игрока обмануть, но и чтобы он обмана не заметил :) Вот именно поэтому надо чтобы оба стекла разбивались одновременно, когда игрок разбивает только одно из них.

Перейдем к реализации этой идеи. Посмотрите на картинку ниже.

Вид сверху. Создаем прозрачный триггер поверх двух стекол


Пунктиром обозначен новый объект, который мы сейчас создадим. Это тоже func_breakable. Размеры у данного объекта точно такие же, как и у стекол, только по толщине несколько шире (шире чем оба стекла вместе взятые).

Закрасим все стороны func_breakable текстурой {BLUE. На рисунке ниже данный объект показан в 3d-виде (стекол не видно, т.к. новый объект должен быть немного толще, т.е. оба стекла находятся как бы внутри этого объекта).

Создаем func_breakable, со всех сторон окрашенный текстурой {BLUE


Свойства func_breakable следующие:

Target on break - glass1 (вписываем сюда имя двух стекол, оно одинаковое);
Material type - Glass;
Strenght - 1 (прочность*);
Render Mode - Solid;
FX Amount - 255

Вот и все. Теперь на самом деле игрок будет разбивать вовсе не стекла, а наш новый абсолютно прозрачный объект func_breakable. А тот, в свою очередь, мгновенно разобьет оба стекла сразу. Игрок обманут, стекла разбиты, трюк работает, можно и пивка попить :)

* Желаемую прочность стекол необходимо выставлять в параметре Strenght именно нового объекта func_breakable. Понятно, что игрок будет стрелять не в стекла, а в этот невидимый объект, поэтому прочность самих стекол в расчет не принимается.

Как говорила несколько лет назад в одной рекламе певица Валерия: <результат налицо>:

Левое стекло из func_wall неразбиваемое, правое из func_breakable - разбиваемое


Вот и все. Со стеклами разобрались.


Ссылки

oneway_glass.zip [15Кб] — в архиве карта-пример в форматах BSP и RMF.


Глава XI. Стекла.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0029 ]