Из данного материала вы узнаете, как создавать огонь (простой и более
сложной конструкции). От вас потребуется знание следующих
энтити-объектов:
Сначала сделаем наипростейший огонь. Для этого нам понадобятся всего 2 энтити-объекта:
light и
env_sprite. Остальные энтити мы будем использовать для создания всевозможных спецэффектов (смотрите вторую часть материала).
Что же, сперва определим место, в котором будет полыхать наш огонь :-)
Возможно это будет факел или какая-либо чаша. Можно просто разместить
огонь на земле в виде костра.
Для изготовления огня используются анимированные спрайты с изображением огня (файлы
*.spr), которые находятся в директории
cstrike/sprites.. или, если их там нет, то в архиве pak0.pak в директории valve. Мы воспользуемся стандартным спрайтом огня с названием:
xffloor.spr. Все что нужно сделать, это вставить в уровень в требуемом месте точечный энтити-объект
env_sprite (смотрите картинку ниже).
Теперь нужно выставить следующие параметры
env_sprite.
Render Mode — Additive (данный режим убирёт чёрную подложку спрайта);
FX Amount — 180 (степень прозрачности спрайта; больше — прозрачнее);
FX Color — 255 175 70 (цвет огня, в данном случае оранжевый);
Sprite Name — sprites/xffloor.spr (здесь устанавливается путь к файлу со спрайтом огня)
Scale — 1 (масштаб спрайта. Если нужен огонь побольше или
поменьше, то измените масштаб спрайта. Значения возможны любые, к
примеру: 0.3, 0.85, 1, 2, 3.5 и пр.)
Теперь перейдите к флагам и отметьте флажок
Start on, чтобы анимация спрайта автоматом начинала играться в начале раунда, иначе огонь будет «стоять»)
Как таковой огонь, так как является спрайтом, не испускает свет.
Отсюда следует, чтобы вокруг огня было светло, нужно вставить источник
света — обыкновенную лампочку
light (смотрите картинку ниже).
Свойства
light:
Brightness — 255 210 135 80 (светло-оранжевый свет средне-малой яркости)
Вот и всё — наипростейший огонь готов.
Сложный огонь можно назвать скорее продвинутым, более реалистичным.
Чем же он отличается от только что расмотренного простого огня?
У продвинутого огня есть: звук горения, свечение (дымка, ореол)
вогруг и при попадании в этот более реалистичный огонь, игрок получает
повреждения. Ну чтож, создадим всё это.
В начале сделаем свечение (дымку, ореол) вокруг огня. Создается
свечение уже известным нам способом при помощи точечного энтити-объекта
env_glow. Расположим данный объект в центр огня. На рисунке ниже сам огонь (объект
env_sprite) расположен чуть выше «свечения» —
env_glow. Данные энтити-объекты практически совпадают друг с другом, но всё же
почти...Для создания свечения мы будем использовать спрайт
glow04.spr из директории
cstrike/sprites.. Выставим параметры
env_glow.
Render FX — Constant Glow (можно выставить и Normal, смотрите ниже)
Render Mode — Glow (для env_glow всегда должен быть данный режим)
FX Amount — 150 (чем больше значение, тем ярче, заметнее свечение. Максимум: 255)
FX Color — 255 210 135 (цвет дымки, в данном случае светло-оранжевый)
Model — sprites/glow04.spr (здесь устанавливается путь к файлу со спрайтом)
Sprite Scale — 1 (масштаб спрайта. Чем больше масштаб, тем больше свечение)
Теперь подробнее о параметре
Render FX. Для спрайтов советуется указывать два режима:
Normal или
Constant Glow.
Вся разница между данными режимами отображения заключается в различной
интенсивности (яркости, насыщенности) свечения при приближении/удалении игрока от спрайта.
В режиме
Normal при удалении игрока от спрайта, его яркость уменьшается, спрайт становится менее видимым. При
Constant Glow
спрайт всегда имеет постоянную яркость, независящую от дистанции
взгляда игрока. Попробуйте оба варианта, иногда лучше выглядит Normal,
иногда Constant Glow.
Свечение готово. Теперь вставим звук горения пламени. Для этого воспользуемся точечным энтити-объектом
ambient_generic. Вставим его где-либо рядом с огнем (смотрите картинку ниже).
Выставим свойства
ambient_generic.
Path/filename.wav of WAV — ambience/burning3.wav (путь к звуковому файлу в формате WAV). Если в директории
cstrike/sound/ambience..
у вас нет такого звука, то воспользуйтесь программой PakExplorer и
выньте данный звук из архива pak0.pak, который находится в директории
valve;
Volume — 5 (громкость звука. Максимально громкий 10. Мы сделали
не очень большое по размерам пламя, поэтому и громкость поставили
маленькую)
Остальные параметры маловажны и их можно не выставлять.
Теперь перейдём к флагам и отметим
Small Radius. Это значит, что звук будет слышен на маленьком расстоянии от огня. Со звуком также разобрались.
И последнее, игрок, попадающий в огонь, должен получать повреждения.
Если оставить всё как есть, то через пламя можно будет свободно
проходить. Некоторым игрокам не нравится, когда они получают
повреждения, другим, как ни странно — нравится :-), так более
реалистично. Палка о двух концах...
Для нанесения повреждений используется брашевый (brush-based) энтити-объект
trigger_hurt.
Размеры данного энтити-объекта определяют пространство, при вхождении в
которое, игрок будет нести урон здоровья, поэтому размещать
trigger_hurt нужно вокруг пламени, то есть пламя должно быть расположено внутри
trigger_hurt.
Выберем спец. текстуру
AAATrigger и создадим вокруг пламени простой браш (смотрите картинку ниже). Выберем его и нажмём
[Ctrl-T], в списке выберем
trigger_hurt.
Выставим параметры
trigger_hurt, указывающие на тип повреждений и их силу.
Damage — 3 (число наносимых повреждений в секунду);
Damage Type — BURN (вид повреждений, в данном случае от огня.
Влияет только на иконку отображаемую в игре на экране, то есть когда
повреждение от пламени — иконка огня и т.п.).
В итоге всех наших мучений должен получится довольно красивый и реалистичный огонь (смотрите картинку ниже).
На нашей карте-примере мы разместили около правого факела ящик, чтобы
можно было прыгнуть в огонь и получить повреждения (проверить работу
триггера trigger_hurt) :-)
fire_32.zip [81Кб] — в архиве карта-пример в форматах BSP и RMF, а также необходимые спрайты и звуки.