Просмотр
Материал из DoomDev
Страница «
Лифты
»
Перейти к:
навигация
,
поиск
[[Изображение:lift1.gif|frame|center|Рисунок 1: Лифт]] Когда появился исходный код Doom, одним из первых портов, действительно расширяющих среду Doom, был Boom, разработанный экспертами в области Doom из [[TeamTNT]]. Randy дальновидно включил в ZDoom расширения Boom, одним из которых был лифт. Лифт – это сектор, движущийся вверх и вниз, сохраняя при этом постоянное расстояние между полом и потолком. Лифтами можно заменить подъемники, получив реалистичную среду. На уровне [http://zdoom.org/zdkb/elevator.zip elevator.wad] приведен пример использования лифта. [[Изображение:lift2.gif|frame|center|/##<br> Floor = Высота пола<br> Ceiling = Высота потолка<br> Script = Скрипт<br> Switch = Выключатель<br> C = В<br> PlayerStart = Вход игрока<br> B = Б<br> A = А<br> ##/<br> Рисунок 2: План карты]] План карты может сначала показаться сложным, но вы быстро разберетесь в нем, как только поймете, как работает лифт. Для добавления лифта нужно причина, поэтому нужны два сектора, находящихся на различных высотах. На рисунке 2 сектора А и Б расположены на разных высотах. Сектор В является лифтом и находится между этими высотами. Помните, что у сектора-лифта должно быть некоторое расстояние между полом и потолком, так как оно сохраняется при его движении. Так как высота текстуры выключателя равна 72, то расстояние между полом и потолком я сделал равным 72-ум. При перемещении лифта перемещается и эта текстура. Для перемещения лифта используются три спецификатора: [[Elevator_MoveToFloor]] (№246), [[Elevator_RaiseToNearest]] (№245), [[Elevator_LowerToNearest]](№247). Elevator_MoveToFloor(tag, скорость) * tag – tag сектора-лифта * скорость – скорость перемещения лифта Этот спецификатор перемещает лифт к уровню пола, на котором был активирован данный спецификатор. На рисунке 2 два выключателях в секторах А и Б вызывают лифт к соответствующему сектору. Это требуется на тот случай, если лифт окажется на другом этаже. Elevator_RaiseToNearest(tag, скорость), Elevator_LowerToNearest(tag, скорость) * tag – tag сектора-лифта * скорость – скорость перемещения лифта Эти спецификаторы предназначены для перемещения лифта от этажа к этажу. На рисунке 2 выключатель лифта активирует скрипт, вызывающий тот или иной спецификатор в зависимости от того, на каком этаже находится лифт. Так как выключатель должен вызвать два спецификатора (RaiseToNearest и LowerToNearest), то это лучше делать при помощи скрипта. А вот и сам скрипт: #include “zcommon.acs” //Флаг, показывающий, на каком этаже находится лифт. int floor; //Этот скрипт активируется выключателем в лифте. script 1 (void) { if (floor==1) { Elevator_LowerToNearest (1, 16); floor=0; } else { Elevator_RaiseToNearest (1, 16); floor=1; } } //Этот скрипт активируется выключателем из нижнего сектора. //Он изменяет флаг floor, чтобы скрипт 1 «знал» на каком этаже //находится лифт; В данном случае новое значение - 0 – нижний сектор. script 2 (void) { Elevator_MoveToFloor (1, 16); floor=0; } //Этот скрипт активируется переключателем из верхнего сектора. //Он изменяет флаг floor, чтобы скрипт 1 «знал» на каком этаже //находится лифт; В данном случае новое значение - 1 – верхний сектор. script 3 (void) { Elevator_MoveToFloor (1, 16); floor=1; } Скрипт прост, но эффективен. Помните, что лифты могут посещать больше двух этажей. Если у вас трехуровневая или четырехуровневая структура, то вызов RaiseToNearest или LowerToNearest будет останавливать лифт на каждом этаже. {{RCTutorial}}
Шаблон:RCTutorial
Возврат к странице
Лифты
.
Просмотры
Статья
Обсуждение
Просмотр
История
Личные инструменты
Представиться системе
Навигация
Заглавная страница
Сообщество
Текущие события
Свежие правки
Случайная статья
Справка
Поиск
Инструменты
Ссылки сюда
Связанные правки
Загрузить файл
Спецстраницы