Написано 20.10.22 - 22:10:05В этой статье речь пойдет о создании такой вертикальной лестницы, по которой можно будет подняться вверх пока она цела. Если ее разбить, то подняться по ней будет невозможно.
Примечание: этот метод, скорее, более подходит для применения на сингл-картах Half-Life. Если такую лестницу разбить в одном из раундов в Counter-Strike, то, хотя лестница и появится в следующем раунде, подниматься по ней будет нельзя до конца игры на данной карте.
Как всегда, сделаем сначала основу для нашей тестовой карты. Это будет комната, разделенная на два "этажа". В потолке нижнего "этажа" делаем отверстие, в которое и будет вести наша лестница.
После того, как комната будет готова, примемся за создание лестницы. Создадим браш шириной 32 и толщиной 4 юнита - самые оптимальные размеры. Высота браша в нашем примере составляет 176 юнитов, можете изменять ее по своему желанию. Окрашиваем браш со всех сторон любой текстурой лестницы, лично я использовал для этого стандартную текстуру {LADDER1 из halflife.wad. Выравниваем текстуру и устанавливаем браш в проеме люка:
Это - та часть лестницы, которую будет видно в игре. Теперь разместим вплотную к ней собственно лестницу - невидимый в игре объект, по которому и поднимается игрок. Можете создать новый браш таких же размеров, но проще и быстрее поступить следующим образом. Выделите нашу лестницу-заготовку, нажмите клавишу Shift, и, удерживая ее, передвиньте мышкой получившуюся копию, поставив ее вплотную к заготовке. Теперь эту копию выделяем и окрашиваем текстурой AAATRIGGER. Затем превратите ее в энтитю, выбрав из списка func_ladder. Должно получиться примерно так:
Итак, работа с брашами закончена. Теперь перейдем к главному.
Поскольку лестница будет разбиваться, то ей нужно дать способность к разрушению.Поскольку сам func_ladder невидим в игре и непосвященный игрок даже не подозревает о его существовании, то разбиваться будет наша заготовка, которую мы ранее окрасили текстурой лестницы. Выделяем ее и отправляем To Entity, из списка выбираем func_breakable.
Первым делом установим для нее параметры, делающиее ее частично прозрачной в игре. Ставим:
Render Mode - Solid
FX Amount - 255
Теперь установим характеристики материала, из которого изготовлена лестница и показатель прочности (чем выше число, тем выше прочность):
Material type - Metal
Strenght - 10 (хватит одного выстрела из пистолета)
Теперь представим, как объекты будут работать в игре. Игрок разрушит "лестницу", но func_ladder от этого никуда не исчезнет, следовательно будет конфуз, когда окажется, что залезть наверх можно буквально "по воздуху". Значит, нужно сделать так, чтобы настоящая лестница удалялась из игры одновременно с разрушением видимого объекта.
Для этого воспользуемся любопытным свойством некоторых объектов - Kill Target, которое позволяет при активации этого объекта удалить любой другой именованный объект из игры. Имеющийся у нас func_breakable такой возможности не имеет, поэтому воспользуемся полезной точечной энтитей - trigger_relay. Логическая цепочка будет выглядеть теперь так: игрок разрушает видимую лестницу (func_breakable). В момент своего разрушения последний активирует trigger_relay, а тот уже удаляет настоящую лестницу - func_ladder. Просто и изящно.
func_ladder и func_breakable у нас уже есть, добавим на карту trigger_relay и окончательно настроим объекты. Чтобы активировать объект, ему сначала необходимо дать имя. Открываем свойства func_ladder и ставим:
Name - ladder
Теперь переходим к trigger_relay:
Name - lad_br
Kill Target - ladder
Остальные параметры оставляем без изменения.
Теперь возвращаеммся к свойствам func_breakable:
Target on break - lad_br
В итоге, все выглядит примерно так:
Все готово. В заключение, как обычно, ставим респауны игроков и свет. Сохраняем карту и экспортируем ее в формат MAP для компиляции. Компилируем и проверяем эффект в игре. Образцы во вложениях