Давайте как всегда начнем с самого простого - func_plat:
Func_plat создает платформу, которая поднимается вверх, когда игрок заходит на нее. Платформу нужно создавать в верхней позиции - она автоматически появится в нижней позиции в игре.
Параметры этого объекта очень просты:
Name - имя платформы, для ее активации. Move sound - звук при движении. Stop sound - звук при остановке. Sound volume - громкость звука. Travel altitude - расстояние в юнитах. Если положительное значение, то платформа появится ниже на указанное число юнитов. А если значение отрицательное, то наоборот - платформа появится выше на указанное число юнитов. И в том, и в другом случае она все равно будет двигаться вверх. Speed - скорость движения (подъема).
Флаги: Toggle - если установлен, то при активации платформа будет двигатся вверх\вниз.
Также, существует другой вид такой платформы - func_platrot. Это тоже самое что и func_plat, только при движении func_platrot еще и вращается. Так как это вращающийся объект, то для него еще нужна ось (ORIGIN-браш) - не забудьте про нее =)
Параметры func_platrot почти ничем не отличаются от параметров func_plat:
Name - имя для активации. Move sound - звук при движении. Stop sound - звук при остановке. Sound volume - громкость звука. Speed of rotation - скорость поворота платформы. Travel altitude - расстояние в юнитах. Если положительное значение, то платформа появится ниже на указанное число юнитов. А если значение отрицательное, то наоборот - платформа появится выше на указанное число юнитов. Spin amount - угол вращения платформы.
Флаги: Toggle - если установлен, то при активации платформа будет двигатся вверх\вниз. X asis - по дефолту, платформа вращается по оси Z. Если отметить этот флаг, то она будет вращатся вокруг оси X. Y asis - то же самое, только по оси Y.
Как видите, создать простую поднимающуюся платформу не составит никакого труда.
А теперь давайте рассмотрим более интересный вид лифта:
Вспомните, например, cs_siege - там есть лифт, который двигается вверх\вниз от нажатия кнопки. Реализуется это довольно просто: лифт - это func_door, а кнопки - это обычные func_button'ы.
Для начала, создайте из простых брашей модель лифта. Далее, выделите все его части, и сделайте из них func_door, с такими пропертис:
Name - имя лифта, чтобы в последствии его можно было активировать. Speed - скорость движения. Move sound, Stop sound - звук при движении лифта, и при остановке. Lip - по дефолту лифт проезжает ровно на расстояние своей ширины\высоты. Параметр Lip может изменить это: если поставить отрицательное значение, то лифт будет проезжать дальше на указанное значение, если указать положительное значение, то наоборот. Damage inflicted when blocked - количество повреждений, которые нанесутся игроку, если его прижмет лифтом.
Флаги: Toggle - если включен, то лифт после передвижения от одной точке к другой, назад возвращаться не будет, пока его снова не активировать.
Также, не забудьте указать направление движения лифта стрелочкой Angle (или up\down).
Лифт готов! Теперь на каждом из двух этажей создайте кнопки, которые будут активировать лифт:
Targetted object - впишите сюда имя лифта. Sounds - звук при активации. Delay before reset - числовое значение, которое определяет через какой промежуток времени кнопку можно будет активировать снова. Если значение "-1", то повторно кнопку активировать не получится! Delay before trigger - задержка между нажатием кнопки и активацией объекта, имя которого вписано в графу Targetted object. Советую установить небольшую задержку перед активацией, чтобы игрок после нажатия на кнопку успел зайи в лифт. Флаги: Don't move - если включен, то кнопка не будет двигаться после активации. Touch activates - кнопка будет активироваться если ее тронуть. Если не хотите - не отмечайте это флаг =)
Теперь нужно настроить лифт на "правильное" движение. Посмотрите на такое расположение лифта:
При таком расположении, если лифт активировать - то он поедет вверх на растояние своей высоты, и в конечном итоге окажется в правильной позиции:
А если у нас этажи расположены по другому, например так:
То после активации, лифт продвинется совсем не так как мы ожидали:
В этом случае нам поможет параметр func_door - Lip. Просчитайте на сколько юнитов не доезжает лифт (или проезжает), и введите данное значение в параметр Lip объекта func_door. К примеру, рассмотренная на рисунках можель лифта не доезжает до второго этажа на 24 юнита, тогда в параметре Lip нужно ввести значение "-24" (без кавычек). Как видите - теперь все нормально:
Кстати, объект func_button может также двигаться. Так что можно создать кнопку в самом лифте, и при движении лифта сделать так, чтобы кнопка двигалась с ним, как будто это один объект =)
Также, вы можете создать множество других видов лифтов. Не забывайте про func_train - с ним можно реализовать намного больше возможностей, чем было описано в этойт статье! Подробнее про func_train читайте в главе "Поезда".