В этой статье мы расскажем о создании огня (простой и более сложной конструкции). Для реализации этих двух видов огней нам потребуются следующие энтити-объекты:
light
env_glow
env_sprite
ambient_generic
trigger_hurt
1. Простой огонь
Сначала создадим простейший огонь. Для этого нам потребуется всего два объекта: light и env_sprite. Остальные объекты мы будем использовать при создании различных спецэффектов (см. II часть статьи). Итак, сначала определимся с местом, в котором будет гореть огонь. Это может быть факел или какая-то чаша. Можно просто разместить огонь на земле в виде костра.
Для создания огня используются анимированные спрайты с изображением огня (файлы *.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.2, 0.45, 0.8, 1, 2, 3.5 и т.д.)
Теперь перейдите к флагам и отметьте Start on, чтобы анимация спрайта автоматически начинала проигрываться в начале раунда, иначе огонь будет «стоять»)
Сам по себе огонь, т.к. является спрайтом, не излучает свет. Следовательно, чтобы вокруг огня было светло, необходимо вставить источник света — обыкновенный light (см. рис. ниже).
Свойства light:
Brightness — 255 210 135 80 (светло-оранжевый свет средней яркости)
Это все — простой огонь готов.
2. Более сложный, но и более реалистичный огонь
Сложный огонь можно назвать скорее продвинутым, более реалистичным. Чем же он отличается от только что расмотренного простого огня?
У продвинутого огня есть звук горения, у продвинутого огня есть свечение (дымка) вогруг и при попадании в продвинутый огонь, игрок получает повреждения. Ну чтож, реализуем все это.
Превратим простой огонь в продвинутый. Сначала создадим свечение (дымку) вокруг пламени. Создается дымка уже известным нам способом при помощи точечного энтити-объекта 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. Для спрайтов рекомендуется выставлять 2 режима: 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. Это означает, что звук будет слышен на небольшом расстоянии от огня. Со звуком тоже разобрались.
И последнее, игрок, проходящий через огонь, должен получать повреждения. Если оставить все как есть, то через огонь можно будет безболезненно проходить. Некоторым игрокам не нравится, когда они получают повреждения, другим, как ни странно — нравится Палка о двух концах...
Для нанесения повреждений используется брашевый энтити-объект trigger_hurt. Размеры этого объекта определяют область, при вхождении в которую, игроку будут наносится повреждения, поэтому размещать trigger_hurt необходимо вокруг огня, т.е. огонь должен быть расположен внутри trigger_hurt.
Выберите специальную текстуру AAATrigger и создайте вокруг огня обычный браш (см. рис. ниже). Выделите его и нажмите [Ctrl-T], в списке выберите trigger_hurt.
Выставим свойства trigger_hurt, указывающие на тип повреждений и их силу.
Damage — 3 (количество наносимых повреждений в секунду);
Damage Type — BURN (вид повреждений, в данном случае от огня. Влияет только на иконку отображаемую в игре на экране, т.е. когда повреждение от огоня - иконка огня и т.д.).
В итоге всех наших мучений должен получится довольно красивый и реалистичный огонь (см. рис. ниже).
На нашей карте-примере мы разместили около правого факела ящик, чтобы Вы могли прыгнуть в огонь и проверить как работает trigger_hurt
Итак, мы научили Вас создавать огонь самой сложной конструкции. Использовать или нет все эти «навороты» решать Вам. К примеру, вполне можно обойтись без дымки и повреждений, ограничившись лишь самим огнем и звуком.