WorldCraft - Учебник
Это не совсем учебник - скорее, интересные статьи о крутых эффектах. Предполагается, что Вы умеете работать с WC (Hammer) и делать простые уровни.
Новые статьи отмечены звездочкой (*)
Содержание
1)
"Как заставить монстров ходить по потолку", или "Взрывпакет, лежащий на боку"2)
Туман - это реальность!3) *
Как открывать и закрывать пар из трубы
1) "Как заставить монстров ходить по потолку", или "Взрывпакет, лежащий на боку"
Пояснения:
того, кто играл в Case Closed, наверняка поразили уровни с хождением по потолку, в часности, барнаклы, "свисающие" с пола. А в Azure Sheep заметили взрывпакеты, разложенные на полках на боку? Нет, это не другое body, а чисто эффект, созданный маппером. А про Blue Shift'овский уровень с зеркальным полом вообще молчу. Хотите сделать такое же? Если да, то читайте дальше. Если нет, то делайте низкокачественные поделки а ля Crash Final или Chaos (да простят меня их создатели!).
Начнем с монстров. Сделайте большую комнату-куб и разделите пополам тонким брашем, который превратите в func_wall. Ставьте ему Render Mode - Texture, FX Amount - 96. Теперь ставьте на него двух monster_alien_slave. Обоим поставьте flags- Gag, Wait For Script и Prisoner. Первого назовите slave1, второго, соответственно, slave2. И ещё: второму в режиме отключенного Smart Mode добавьте пункт angles и напишите значение "0 180 180" (без кавычек). Теперь поместите на уровень два scripted_sequence и у обоих ставьте параметры: "name" - должно быть пусто, "Idle animation" - idle1, "Move to position" - Instantaneous, flags - No Interruptions и Override AI. У первого секвенса в поле "target monster" пишите slave1, а у второго - slave2. Внимание! Совместите обоих слейвов так, чтобы они перекрыли друг друга (слились в один "столбик"). Вуаля - компилируйте и наслаждайтесь эффектом зеркала.
Но есть одно НО, и очень большое - "отражение" слейва - это ДРУГОЙ монстр, просто он четко согласован с первым! Так что если они будут атаковать игрока или бегать, то весь эффект разрушится.
Чтобы сделать монстра, "ходящего по потолку", удалите первого слейва (не "отражение") и оба scripted_sequence, но добавьте другой ("Move to position" - Walk, "Action Animation" - idle1, "Target monster" - имя слейва (slave2), "Name" - walk_sq). Поставьте info_player_start ПОД func_wall'ом. Также поставьте trigger_auto c "target" - walk_sq. Готово!
И здесь есть ограничения. Перевернутые монстры ведут себя как обычные, т.е. AI остается "сверху". В связи с этим их нельзя использовать как врагов :-(
Аналогично делается лежащий на боку взрывпакет. Поэкспериментируйте с Angles (их еще называют Pitch Yaw Roll - YZX) и добьетесь потрясающих эффектов!
Пояснения:
скромно сообщаю, что этот эффект придумал я, и его обсуждали на форуме spirit.valve-erc. Его недостатки - тормознутость на не очень современных машинах.
Суть эффекта - использование ОГРОМНОГО количества env_glow. Я создал специальный спрайт для этого. 150 ентитей достаточно для средней комнаты (!). Но ее необходимо изолировать от остальной части карты коридором, иначе будут дикие тормо за в связи с "too many entities in
visible packet space", что не есть хорошо. Остальное просто, как env_spark - скачивайте пример карты, там все понятно.) Как открывать и закрывать пар из трубы
Пояснения:
предположим, Вы хотите сделать трубу, на которой есть вентиль, который открывает и закрывает пар, обжигающий игрока. Если Вам кажется, что просто спрайта stmbl1.spr недостаточно, читайте дальше.
Итак, пар - это несколько спрайтов (например, я использую
stmbl1.spr), расположенных по одной линии, с одинаковым фреймрейтом и постепенно увеличивающимся скейлом (scale). Спрайт у трубы имеет минимальный скейл, а самый удаленный - максимальный. Спрайт содержит энтити env_sprite. Создайте пять штук по одной линии со скейлами от 1 до 5. (Я предполагаю, что сама труба и вентиль - func_rot_button - у Вас уже есть). Выставьте спрайтам Render Mode - Additive, FX Amount - "150". Назовите их: первого - steam1, второго - steam2 и т.д. Теперь обжигание - trigger_hurt в зоне близ спрайтов (Name - "steam_hurt", Damage - "100", Damage type - BURN).Очевидно, что пар должен при открытии вентиля "выйти" из трубы, а не внезапно окутать игрока. Для этого будем включать спрайты последовательно с интервалом 0,2 сек
. И еще - вентиль должен в первый раз включать пар, а во второй - выключать. Для этого используем два trigger_changetarget. Назовите ваш вентиль (func_rot_button) "vent" и в поле "target" обоих триггеров пишите "vent". Имя первого триггера сделайте cht_on, второго - cht_off; в поле "New target" у первого пишите "mm_on", у второго - "mm_off". Итак, осталось немного. Делаем два multi_manager'а, первого назовите "mm_on", второго - "mm_off". Выключите Smart Mode и добавьте параметры:У первого пишите:
Steam1 0
Steam2 0.2
Steam3 0.4
Steam4 0.8
Steam5 1
Steam_hurt 0.8
Cht_off 1
У
второго:Steam1 1
Steam2 0.8
Steam3 0.6
Steam4 0.2
Steam5 0
Steam_hurt 0.2
Cht_on 1
Готово! Компилируйте. При
"нажатии" вентиля из трубы вырвется пар, при повторном нажатии - плавно исчезнет. Чего-то не хватает, правда? Звука! Ставьте ambient_generic (Name - "steam_snd", Sound - "sound\ambience\steamjet1.wav", flags - Small Radius и Start Silent) и добавьте ключ "steam_snd" в оба мультименеджера. Вот и все. Вот что в результате получилось у меня :-)
Chain Studios, 2001-2002