Категории каталога

Прохождения [2]
Все прохождения к играм серии Postal
Коды [4]
Здесь можно узнать коды на игры серии Postal и к ее модификациям
PostED и модостроительство [18]
Здесь находятся туториалы и обучения по работе с редактором PostED и моддингом вцелом
Интересное [3]
Разные интересности, касающиеся Postal - секреты, интервью, факты, дневники разработчиков и прочее

Форма входа

Поиск

Мини-чат

200

Статистика

POSTAL WORLD IN RUSSIA

Каталог статей

Главная » Статьи » PostED и модостроительство

Mover Tutorial For Postal2
Первичные требования

Перед прочтением данного раздела настоятельно рекомендуется ознакомится с основными элементами PostED. Вы должны уметь оперировать простейшими понятиями, а также уметь конструировать более или менее простые карты. Если таковых знаний Вы не обнаружили у себя ни в левом, ни в правом полушариях мозга, ознакомьтесь с туториалом по основам этого самого PostED.

Вступление

Вообще сделать простенький мувер (mover) не сложно, например дверь или лифт, но на самом деле этим муверы не ограничиваются. Этот туториал (tutorial) расскажет Вам обо всем касающимся муверов. Каждое свойство (propertie) и каждый тип мувера (movertype) досконально будет рассмотрен.

Этот туториал разбит на три части:

    * Часть I - для начинающих, описывает основы создания простеньких муверов.
    * Часть II - для продвинутых мапперов (mappers), содержит описание всех свойств муверов и классов.
    * Часть III - будем использовать знания полученные в первых двух частях для создания всяких полезных штучек.

Часть I

Что такое мувер?

Мувер - это двигающийся браш (brush). Он может двигаться в любую точку и/или вращаться. Большинство муверов имеют несколько промежуточных положений - кадров (keys). Key0 - это начальное положение мувера до тех пор, пока он не будет возбужден - запущен. Остальные кадры-ключи - это положения, в которые будет перемещаться мувер при активизации. Он будет двигаться через все положения, пока не достигнет последнего кадра-ключа.

Вы легко можете отличить мувер в едиторе из-за его фиолетового цвета.

Муверы могут быть использованы для дверей, лифтов, поездов, лодок, кнопок, вращающихся метеоритов, в общем, для всего, что может двигаться.

В этот туториале когда говорится, что мувер "открыт" имеется в виду что он находится в последнем положении (кадре-ключе), а "закрыт" - соответственно при положении в кадре0 (key0). "Закрывающийся" мувер - это мувер двигающийся в направлении из последнего кадра-ключа к первому, "открывающийся" - наоборот, из первого кадра-ключа к последнему. Эта терминология родилась из-за применения муверов, в основном, в качестве дверей. Но в последующем, в туториале эта терминология сохранится, даже если мувер не будет являться дверью.

Создаем простенький лифт

Стандартный мувер в PostED - это мувер перемещающийся в новую позицию, когда Вы до него дотрагиваетесь, потом "ждет" несколько секунд и возвращается в исходное положение.

Начнем с создания лифта, который поднимается когда Вы на него наступаете. Создадим большую комнату.

В комнате передвиньте активный браш (active brush) - он ярко красного цвета - в положение где Вы хотите расположить Ваш первый лифт и нажмите на кнопку , расположенную слева на панели инструментов (toolbar) под кнопками Добавить (Add), Вырезать (Subtract), Пересечение (Intersect), Вычетание (Deintersect)

По нажатию этой кнопки, Вы увидите, что активный браш стал фиолетовым. Это и есть мувер! Но этот мувер пока никак не отреагирует, если Вы на него наступите. Также этот мувер возможно не имеет ни текстур, ни формы, которую Вы задумали. Важно понимать, что мувер обязательно должен быть одним законченным брашем (а не состоять из группы брашей), именно поэтому Вы не сможете таким путем создать сложный мувер.

Вот почему возникает необходимость создания сперва шаблона (образца) будущего мувера - пользуясь обычными способами, а затем применить Пересечение (Intersect) для того чтобы активный браш принял форму задуманного Вами мувера (более детально следует ознакомиться с туториалом по созданию сложных брашей). После этого можете смело воспользоваться кнопкой Добавить Мувер (Add mover).

Удалите только что созданный мувер потому, что сейчас Вам предстоит создание более сложного. Сделайте сперва шаблон лифта. Обычно для этой цели, где-то вне уровня создается комната под подобную "мастерскую" или если Ваш уровень - открытое пространство, то шаблон можно смастерить прямо где-нибудь в небе. Используйте нормальные браши для построения шаблона (имеется в виду голубые и желтые). Примените текстуры, подгоните их, в общем сделайте лифт таким каким Вы хотите видеть его в уровне. Когда закончите, перестройте геометрию (Rebuild Geometry), затем обведите активным брашем Ваш шаблон. Убедитесь что будущий мувер полностью вписывается (вмещается) в активный браш и при этом активный браш не включает в себя ничего "лишнего".

Сейчас самое время нажать кнопку Intersect . Активный браш примет в точности форму вашего лифта.

Спокойно удаляем Ваш шаблон (Вы же не хотите, что бы он так и висел в небе).

Передвиньте активный браш в начальное положение лифта (в нижнее положение). Нажмите кнопку Add Mover . Сейчас мувер (лифт) в едиторе будет выглядеть как фиолетовые линии, но если Вы запустите Вашу карту, то лифт будет выглядеть в точности как созданный Вами шаблон.

На этом этапе Ваш лифт все же остается неподвижным. Для того чтобы заставить его работать, Вам необходимо указать ему как минимум еще один кадр-ключ. Для этого нажмите правой кнопкой мыши на мувере (фиолетовый браш), в появившемся меню зайдите в Movers и здесь выберите Key1:

Теперь просто переместите Ваш мувер в позицию верхнего положения лифта:

Браш мувера теперь имеет два положения: Key0(base) - нижнее положение лифта и Key1 - верхнее положение лифта. Если Вы теперь нажмете правой кнопкой мыши опять и выберете Key0(base), то мувер переместится в положение соответствующее этому кадру-ключу. Теперь Ваш лифт будет работать. Важно помнить, что исходным положением не всегда является Key0(base). На самом деле исходное положение лифта будет таким, каким оно было при перестройке уровня (Rebuild Level). Теперь, когда Вы наступите на лифт, он поднимется, и, спустя несколько секунд опустится в исходное положение.

Создание простенькой двери

Для того чтобы создать раздвижную дверь (по типу купе в поезде) - нужно сделать в точности тоже самое как и с лифтом, только теперь сделайте мувер в виде двери (или как Вы хотите чтобы она выглядела) и поместите второй кадр-ключ слева или справа или сверху или снизу от базового положения, в зависимости от того как Вы хотите чтобы она открывалась (уезжала в потолок, в пол и т.д.).

Создание створчатой двери

У большинства людей дома как раз именно такие двери, а не футуристические раздвижные. Чтобы сделать дверь "на петлях", нужно опять создать мувер Вашей двери. Но теперь Вам нет необходимости передвигать мувер для получения следующего кадра-ключа. Нужно всего лишь повернуть его. Поворачивается мувер также как и обычный регулярный браш:


Теперь Вы знаете как создавать лифты, раздвижные двери и вращающиеся двери. Также Вы можете этим же способом создать любые движущиеся объекты. PostED не видит никакой разницы между лифтами, дверями, поездами и пр. Движок просто-напросто перемещает объекты между различными кадрами-ключами (Keys).

Муверы с несколькими кадрами-ключами

Лифт и двери, созданные только что Вами, имеют всего 2 кадра-ключа: Key0(base) и Key1. Вы также можете создавать муверы с более чем 2-я кадрами-ключами - максимум их может быть 8. Если Вы создали такой мувер, к примеру, с 4 кадрами-ключами, он при активации будет двигаться от Key0 к Key1, затем к Key2 и, наконец, в Key3. В этом положении лифт остановится на несколько секунд и начнет движение назад - вернется в Key2, затем в Key1 и в базовое положение в Key0, где будет находиться пока не будет опять активирован. Для того чтобы "задать" муверу несколько кадров-ключей, действуйте как в примере с лифтом, но на этот раз задействуйте еще и Key2, Key3 и т.д. по своему усмотрению. Но это еще не все, после того как Вы задали все кадры-ключи, Вы должны также "сказать" муверу сколько кадров-ключей Вы будете использовать. Нажмите правой кнопкой мыши на мувере и в меню щелкните на Mover Properties. В появившемся окне разверните свойство Mover (нажмите + рядом) - появится список доступных настроек. Здесь в поле NumKeys введите количество кадров-ключей. То есть, если Вы использовали Key0, Key1, Key2 и Key3 то в поле нужно ввести число 4.

Свойство KeyNum действует также как и выбор кадра-ключа непосредственно на самом мувере. Когда Вы нажимаете правой кнопкой мыши на мувере, затем в меню заходите в Movers и здесь выбираете Key1 - тот же эффект будет и при выборе KeyNum равном 1 в Свойствах Мувера (Mover Properties).

В большинстве случаев Вы будете устанавливать KeyNum равным 0 перед сохранением уровня и непосредственно перед игрой, но можно и оставить KeyNum равным, например, 1. Это даст Вам дополнительный эффект: допустим Key1 - это верхнее положение лифта, а Key0 - нижнее его положение, также Вы оставили перед сохранением лифт в положении Key1 и запустили игру. Лифт при запуске уровня будет находиться в верхнем положении до тех пор, пока Вы его каким-либо образом не активируете (наступите на него), затем лифт "подождет" несколько секунд и опустится вниз. Теперь в нижнем положении он останется "навсегда" - т.е. до тех пор, пока он не будет активирован снова. Но с этих пор лифт будет нормально действовать: при активации - поднимется, задержится в верхнем положении на несколько секунд, и опустится где будет оставаться до следующей активации.

Перемещаем Мувер в редакторе

В едиторе Вы можете двигать практически все (браши, актеры, ...), даже муверы. Как Вы теперь знаете, муверы имеют несколько положений, соответствующий каждому кадру-ключу. Чтобы переместить конкретный кадр-ключ, Вы должны сперва выбрать этот кадр-ключ, а затем уже перемещать его куда Вам захочется. Если Вы двигаете кадры-ключи Key1, Key2, Key3, ..., Key7 - то перемещения будут относиться непосредственно к данному кадру-ключу. Это не относится к Key0(base) - при перемещении этого кадра-ключа все остальные кадры-ключи перемещаются тоже. Например, если Вы сделали поднимающийся лифт (вне зависимости, сколько он имеет кадров-ключей), и хотите его установить в каком-нибудь другом месте на уровне нет необходимости тягать все кадры-ключи, достаточно выбрать Key0(base) и переместить его - остальные автоматически "последуют" за ним.

Вы можете не только передвигать мувер, но также и вращать. Если Вы повернете Key0(base), то и остальные кадры-ключи также повернутся, но при этом они не переместятся.

Поэтому, если у Вас раздвижная дверь, и Вы хотите сделать еще одну такую же, но повернутую на 90 градусов, то после того как Вы скопировали (duplicate) дверь и повернули ее, Вам необходимо будет переместить все остальные кадры-ключи для корректной ее работы.

Основные свойства мувера

Каждый мувер имеет большое количество настроек и свойств, например время движения, звуки и т.д.

Чтобы перейти к свойствам мувера, нажмите правой кнопкой мыши на нем и щелкните на Mover Properties. В окне перейдите к пункту Mover.

Ниже перечислены основные свойства:

    * bTriggerOnceOnly - если значение установлено true, мувер сработает только один раз, и после этого никогда уже не придет в действие;
    * BumpType - указывает причины активации мувера (если это конечно не triggermover);
           BT_PlayerBump - мувер активируется при прикосновении игрока (например: наступить на лифт);
           BT_PawnBump - активация наступает при помощи так называемых pawns (абсолютно не переводимое слово в данном контексте) - подразумевает под собой живые существа, ракеты, ящики, прочие декорации;
           BT_AnyBump - объединяет два верхних свойства - активация происходит за счет игроков и при помощи pawns;
    * KeyNum - номер кадра-ключа, в котором на данный момент находится мувер, также является номером кадра-ключа отвечающий за исходное положение мувера при старте карты;
    * MoverEncroachType - определяет поведение мувера в случае блокировки его игроком/актером
           ME_StopWhenEncroach - мувер просто замрет, когда дотронется до игрока. Он почти никогда больше не придет опять в движение, даже если Вы дотронетесь до него. Тем не менее, если у Вас в наличии есть мувер с установленной ReturnWhenEncroach, и этот мувер будет вынужден из-за блокировки игроком вернуться, то все остановившиеся муверы имеющие такое же имя (tag) придут в движение опять. Это можно обеспечить только при помощи ReturnGroups (объясняется ниже);
           ME_ReturnWhenEncroach - мувер при блокировке вернется в последнее крайнее положение (если лифт спускался - он поднимется опять);
           ME_CrushWhenEncroach - мувер просто убьет игрока;
           ME_IgnoreWhenEncroach - в данном случае мувер просто будет двигаться через Вас, как будто никто ему не мешает;
    * MoverGlideType
           MV_MoveByTime - мувер будет двигаться с постоянной скоростью;
           MV_GlideByTime - мувер будет использовать ускорение в начале движения (позитивное ускорение) и в конце (негативное ускорение);
    * MoveTime - количество секунд, за которое мувер переместится из одного кадра-ключа в другой. Это означает, что если Ваш мувер использует для движения 5 кадров-ключей и свойство MoveTime установлено равным 1, то муверу понадобится 4 секунды для открытия или закрытия (т.к. имеется только 4 промежутка между различными положениями мувера). Если Вы введете в поле 0, мувер моментально переместится в новое положение, но, тем не менее, эта фишка не позволит использовать мувер в качестве телепортера, исключая конечно те случаи, когда начальная и конечная точки находятся в поле прямой видимости (т.е. отсутствуют какие-либо преграды);
    * NumKeys - количество кадров-ключей для данного мувера;
    * StayOpenTime - задает промежуток времени, сколько муверу оставаться открытым перед возвращением в исходное положение;

Звуки муверов

Теперь перейдем к пункту MoverSounds. Здесь Вы можете задавать звуки, которые будут использоваться мувером. В наличии имеются 5 полей соответственно отображающих разные действия мувера:

    * ClosedSound - звук при окончании закрытия мувера;
    * ClosingSound - звук, соответствующий началу закрытия мувера;
    * MoveAmbientSound - этот звук будет слышен при движении мувера. Также важно помнить, что это обязательно зацикленный звук (looping sound);
    * OpenedSound - звук, когда мувер заканчивает открываться;
    * OpeningSound - звук, производимый мувером при самом начале открытия;

При выборе звуков следует помнить следующее:

    * Никогда не используйте зацикленные звуки (looping sound) для полей ClosedSound, ClosingSound, OpenedSound или OpeningSound - в этом случае они останутся звучать навсегда;

Часть II

Вещи, которые неплохо бы знать.

Многие люди интересуются подобными вещами но никогда не пробовали в действии:

    * Муверы могут проходить сквозь стену. При этом игрок, стоящий на мувере сквозь стену, естественно, не пролезет. Муверы также отлично работают, если исходное положение у них в стене, или вообще вне пределов Вашей карты, где-то в клетчатой темноте. Там мувер вполне хорошо себя чувствует и двигается, и при этом Вы его не видите. Это очень часто используется для привязки объектов к "невидимому" муверу;
    * Муверы работают под водой. Однако здесь нужно иметь в виду, что если игрок стоит на мувере, а он свою очередь двигается вниз, игрок останется барахтаться на месте (что в принципе логично). В данном случае выходом является постройка мувера со стенами и потолком;
    * Когда Вы сохраняете Вашу карту без предварительной перестройки (rebuild), а затем откроете его позже, все муверы пропадают. Во всяком случае, такое имело место несколько раз;

Вращающиеся муверы

Нет никакой необходимости специального класса для вращающихся муверов. Можно заставить вращаться любой объект, декорацию, оружие, мувер и т.д., всего лишь задав соответствующую настройку.

Создайте мувер. Сейчас Вам не понадобиться указания никаких кадров-ключей - достаточно присутствия самого мувера. Откройте свойства мувера, кликнув правой кнопкой мыши на нем, и зайдите в MoverProperties. Здесь перейдите к пункту Movement, в котором есть свойство Rotation Rate. Rotation rate включает в себя три настройки: Pitch, Roll и Yaw. По умолчанию они установлены по нулям - поэтому мувер не вращается. Маленькие значения, такие как 1, 10, 100 заставит мувер вращаться очень медленно, и Вы вообще с трудом заметите какое-либо движение. Значение 1000 - уже более весомо (хотя все же достаточно медленно), ну а 2000-10000 самый раз для шустрого вращения. Естественно, Вы можете заставить мувер вращаться с такой скоростью, какой захотите, но при больших значениях, например 100000, не исключена возможность появления странных эффектов, особенно когда Вы находитесь непосредственно на мувере (стоите на нем).

Воспользуйтесь свойством Pitch для вращения вокруг оси x, Roll - оси y и Yaw - оси z. Все просто: если Вам необходимо вращающаяся платформа - измените значение Yaw, для колес машин же используйте Pitch или Roll.

Вообще у каждого мувера присутствует своя ось/точка вращения. Месторасположение этой оси указано красной точкой с крестиком. Именно вокруг этой точки и будет происходить вращение.

Для того чтобы передвинуть красную точку в другое положение, просто щелкните мышью на любой точке (vertex) браша мувера и красная точка сама туда переместится.

Единственный способ поместить ось вращения в место отличное от точки браша, это сдвинуть браш в упор к краю клетчатой карты. Здесь браш не сможет двигаться дальше, в то время как красная точка продолжит свое движение за пределы. Затем сдвиньте Ваш браш в исходное положение.

Еще одна важная деталь - это установить значение InitialState равным None, т.к. в противном случае кручение мувера будет прервано когда игрок дотронется до него. Эта настройка находится в MoverProperties, в пункте Objects.

Муверы с датчиком (Triggered Movers)

Все муверы которые Вы делали ранее активируются при прикосновении игроком. Но теперь Вы познакомитесь с новым способом активации муверов - датчики (triggers). Сперва следует сказать как создать такой датчик. Откройте Браузер Актеров (Actor Class Browser) - он находится в меню View или нажмите на панели задач кнопку . Здесь зайдите в раздел Triggers и выберете Trigger.

Датчик активируется, когда игрок попадает в радиус его действия. При этом датчиком возбуждается действие (event), активирующее мувер или что-нибудь еще. Устанавливать датчики следует в местах доступных игроку, для того, чтобы он смог активировать его.

Заставим датчик включать Ваш мувер: у датчика в поле Event укажите имя (Tag) мувера. Для этого откройте Настройки Датчика (TriggerProperties) - это делается с помощью нажатия правой кнопкой мыши на датчике. Здесь перейдите к разделу Events и в поле Event введите в точности имя (Tag) Вашего мувера, например Mover1. А затем в свойствах мувера (MoverProperties), который необходимо активировать датчиком, зайдите также в пункт Events, но здесь введите имя Mover1 в поле Tag. Если проследить логически за всеми манипуляциями получается, что действие датчика направлено на объект с именем Mover1 - а объект с этим именем как раз и является Вашим мувером.

Также Вам необходимо будет указать муверу, что он должен активироваться по датчику, а не при прикосновении игроком. Заходим в раздел Objects в окне MoverProperties и здесь воспользуемся свойством InitialState:

    * None - мувер не воспользуется кадрами-ключами, но все же может быть использован в качестве вращающегося мувера или мувера "привязанного" к другому муверу;
    * StandOpenTimed - то же самое что и BumpOpenTimed;
    * BumpButton - то же самое что и BumpOpenTimed, но без всякой задержки будет возвращаться назад;
    * BumpOpenTimed - значение по умолчанию. При прикосновении мувер откроется, задержится на несколько секунд и затем закроется;
    * TriggerPound - объясняется позже;
    * TriggerControl - мувер будет находиться в открытом состоянии, пока Вы находитесь в радиусе его действия, как только Вы покинете зону действия датчика, мувер закроется;
    * TriggerToggle - каждый раз как игрок попадает в радиус действия, мувер будет менять свое состояние между открытым и закрытым, т.е. если мувер открыт и игрок подействовал на датчик, мувер закроется, при следующей же активации датчика, мувер опять откроется и т.д.;
    * TriggerOpenTimed - каждый раз при активации датчика мувер открывается на определенное время, затем закрывается

Для того чтобы заставить мувер работать согласовано с датчиком, Вам необходимо будет воспользоваться одним из вышеприведенных опций, например TriggerOpenTimed или TriggerToggle.

Есть также возможность указать радиус действия датчика: зайдем в TriggerProperties, раздел Collision:

Радиус действия датчика, на самом деле, представляет из себя цилиндр: используйте CollisionHeight для указания высоты цилиндра и CollisionRadius - непосредственно для радиуса цилиндра. Пока игрок находится любой точкой своего тела в этом цилиндре, датчик будет считаться активированным. Очень удобно посмотреть радиус действия в 2D View (в одном из трех окон: Top, Side или Front). Для этого нужно нажать правой кнопкой мыши на заголовке соответствующего окна, зайти в меню Actor и здесь поставить галочку на Radii View:

Вернемся к Свойствам Датчика (Trigger Properties), т.к. здесь есть еще несколько настроек, заслуживающих Вашего внимания. Развернем раздел Trigger:

Перечислим наиболее важные из опций:

    * bTriggerOnceOnly - если значение установлено true, датчик сработает только один раз, и больше не будет действовать;
    * DamageThreshold - указывает сколько необходимо нанести урона датчику для его активации (работает только при TriggerType установленным TT_Shoot).
    * Message - это текст, появляющийся в текстовом поле Вашего HUD в момент активации датчика;
    * RepeatTriggerTime - если у Мувера установлено значение Message, указывает сколько секунд будет повторяться это послание пока Вы находитесь в радиусе действия датчика. 0 означает что Message отобразится на экране только один раз без последующих повторений;
    * ReTriggerDelay - если значение отлично от 0, Вы сможете активировать датчик только по истечении времени, указанном в TriggerDelay;
    * TriggerType - указывает, что может быть причиной активации датчика:
          TT_PlayerProximity - активация происходит при попадании игрока в радиус действия датчика;
          TT_PawnProximity - активируется при попадании в радиус действия pawn (ракета, ящик, любая декорация);
          TT_ClassProximity - действие вызывается при активации датчика только актером (by actor) выбранного класса (class).Например спички, огонь, пули и прочее;
          TT_AnyProximity - объединяет первые две опции: активируется как игроком, так и при помощи pawn;
          TT_Shoot - действие возбуждается при нанесении повреждения, и при этом урон превышает значение, указанное в DamageThreshold;

Муверы и освещение

Муверы имеют несколько настроек, связанных с освещением. Их можно найти в пункте Mover окна Mover Properties.

    * bDynamicLightMover - если установлено в значение true, освещение будет динамически расчитываться для каждого движения мувера, например, если лифт находится в темной комнате, а затем поднимается в более освещенную - свет коснется и его. Но сильно этим не увлекайтесь, если хотите, чтобы Ваш уровень шустро летал и на слабых машинах;
    * BrushRaytraceKey - если Вы не воспользовались опцией bDynamicLightMover, то можете указать здесь номер кадра-ключа, для которого все же Вы хотите просчитать динамически освещение;
    * WorldRaytraceKey - если Вы не воспользовались опцией bDynamicLightMover, то можете указать здесь номер кадра-ключа при котором все же будет просчитано динамическое освещение окружающего пространства (например, тень от лифта);


Вторая тень вычислена для лифта в верхнем положении. Вы также можете использовать это для изготовления искусственных теней.

Зацикленные муверы (Looping movers)

Зацикленные муверы - это муверы, движение которых беспрерывно. Такой мувер все же необходимо один раз активировать. Есть несколько способов создать зацикленный мувер.

The LoopMover

Вообще в едиторе различают несколько видов муверов. Посмотреть типы можно нажав правой кнопкой мыши на кнопке Добавить Мувер (Add Mover). В развернувшемся списке Вы увидите все типы муверов. Самый верхний (Mover) используется по умолчанию. Теперь же выберем LoopMover.

Классы муверов

После непосредственного сконструирования самого мувера (ну и, естественно, нескольких кадров-ключей), стоит залезть в его опции (Mover Properties). Затем заходим в Objects, в пункт InitialState. Как Вы видите, здесь появилось новое свойство - LoopMove. Это единственное свойство заставляющее работать мувер бесконечно. Поэтому выберем его.

Единственный недостаток в том, что LoopMover не начнет движение сам. Его нужно активировать. Для этого добавьте где-нибудь датчик (Trigger) и в его свойствах в поле Event введите имя (Tag) Вашего LoopMover. Теперь при старте уровня, мувер начнет движение как только кто-то попадет в радиус действия датчика. Если же Вы покинете радиус действия, то и движение мувера прекратится в положении ближайшего кадра-ключа.

Если же Вы хотите, чтобы мувер продолжал свое движение вне зависимости от того находитесь ли Вы в радиусе действия датчика или нет, нужно позаботится о том чтобы датчик был активирован все время. Вам понадобится кто-то или что-то для активации датчика, но при этом им не должен являться игрок. Естественно это что-то должно находится все время в радиусе действия Вашего датчика. К счастью большинство pawns подходит для этой роли. Итак, выставляем опцию TriggerType в положение TT_PawnProximity. Далее около тригерра ставим какого-нибудь Pawn и это все помещаем в отдельную комнату.

Скорее всего Вы подумаете, что нужно всего лишь закинуть этого Pawn поближе к датчику и все будет ОК. Но спешу Вас огорчить - не все так просто. В едиторе есть баг - когда кто-то находится в радиусе действия датчика при старте уровня, датчик не активируется. Для реальной активации Вам придется именно "зайти" в радиус действия. Выход из этой ситуации - поместить Pawn над датчиком, так чтобы при падении он попал в радиус его действия. После того как Вы добавили Pawn в нужное место (над датчиком), нужно выставить его физику для падения. Сделаем это, открыв его свойства, пункт Movement. Здесь в списке Physics выберем PHYS_Falling.

По некоторым причинам, падение работает только в том случае, если Вы поместили сначала Pawn на пол, а затем подвинули его наверх с помощью мышки. Не устанавливайте его сразу на потолок. Еще по другим причинам, при изменении чего-либо на уровне, после того как Вы установили Вашего Pawn, весь механизм с ним может не заработать. Поэтому Pawn - последнее, что должно быть добавлено к Вашей карте перед ее сохранением.

Также Вы должны быть уверены, что Pawn находится точно над пространством действия датчика (если помните - то это цилиндр) и что он не разобьется при падении. При использовании комнаты размером 256*256*256 поместите датчик ровно по центру, примерно на высоте 64 юнита. Теперь перейдите в его свойства, раздел Collision. Здесь установите CollisionHeight равный 64, а CollisionRadius сделайте 200. Теперь смело добавляйте кролика. Вы можете посмотреть как это выглядит на скрине ниже. Красный прямоугольник - не что иное, как радиус действия датчика (его видно, потому что установлена Radii View):

Ну и последняя вещь о которой стоит упомянуть - в свойствах мувера, в списке MoverEncroachType выберем ME_IgnoreWhenEncroach, в противном случае мувер остановиться навсегда при прикосновении к нему одним из игроков.

TriggerPound: этот метод использует специфическое значение InitialState вашего мувера: TriggerPound. То есть после изготовления мувера и нескольких кадров-ключей не забудьте установить это значение в InitialState. В принципе TriggerPound это то же самое что и InitialState равный LoopMove при использовании LoopMover, с той лишь разницей, что в данном случае мувер не будет реагировать на прикосновения. Для активации мувера воспользуйтесь той же схемой с Pawn.

Преимущество этого метода состоит в том, что Вы можете регулировать время задержки мувера перед началом закрытия (последний кадр-ключ), а также время задержки перед открытием (исходное положение). Для этого перейдем в свойства мувера (Mover Properties), в раздел Mover. Для задержки перед открытием воспользуйтесь полем StayOpenTime, а перед закрытием - OtherTime.

Связанные муверы (AttachMovers)

Существует особый вид муверов - связанные муверы (AttachMover). Смысл их заключается в том, что они привязаны к другому муверу и в точности копируют их движения. На самом деле для тех же целей намного легче, да и надежней использовать нормальные муверы, если Вы хотите, чтобы объект двигался вместе с мувером.

Для начала создайте нормальный мувер, дайте ему имя (Tag), например, AttachMover. Теперь добавьте любой объект: оружие, декорацию, свет и т.д. в Ваш уровень. Откройте окно свойств объекта, и перейдите в пункт Movement. Здесь в поле AttachTag впишите имя (Tag) мувера, в данном случае AttachMover. После этого в разделе Advanced установите следующие значения: bMovable равный true, bNoDelete равный false и bStatic тоже в положение false:

Теперь "привязанный" объект будет в точности повторять движения мувера, не зависимо от каких-либо внешних помех - даже будет проходить сквозь стены.

Если Вы все же хотите воспользоваться классом AttachMover, то нажмите правой кнопкой мышки на иконке Add Mover и выберете его в списке. После этого откройте свойства связанного мувера (AttachMover Properties). Дайте ему имя связного smile (AttachTag). Теперь все объекты, имеющие такое же имя будут двигаться вместе в ним.

Получается, что единственная разница между использованием AttachMovers и обычного мувера лишь в том, что при использовании последнего Вы указываете одинаковое имя (Tag) в поле AttachTag объекта и в поле Tag самого мувера, а в другом случае наоборот: в поле AttachTag мувера и в поле Tag объекта.

Муверы, связанные между собой

Никто Вам не запрещал привязывать один мувер к другому. Делается это абсолютно точно также как и с привязкой объекта. При таком раскладе у Вас появляется возможность создания мувера у которого промежуточные положения могут не совпадать с заданными кадрами-ключами. Предположим мувер (А) привязан к другому муверу (В). Мувер А будет двигаться в соответствии со своими кадрами-ключами, но в случае движения мувера В, он также будет копировать его движения. Поэтому, если мувер В двигается в другом направлении отличном от траектории движения мувера А, непосредственно сам мувер А будет совершать движение по двум направляющим: его собственная и направление мувера В.

Мувер В, в свою очередь можно спрятать где-то на карте, так что игроки будут видеть только мувер А!

Если Вы захотите чтобы мувер был привязан к нескольким муверам, необходимо будет создать цепочку: мувер А привязан к муверу В, а мувер В к муверу С и т.д.

На данном этапе могут возникнуть непредвиденные ситуации: мувер, привязанный к другому муверу имеет свои кадры-ключи (например движение влево), а мувер В, к которому он привязан, совершает движение вверх. Следовательно мувер А будет двигаться влево и вверх одновременно. Если же теперь муверу А нужно будет вернуться в исходное положение (справа), то он автоматически опустится вниз, даже если мувер В все еще наверху. В случае движения мувера В в свое исходное положение (вниз), мувер А сдвинется еще ниже и уйдет в пол!

Основное использование такой техники - это лифты с внутренними дверями. В этом случае двери будут опускаться и подниматься вместе с лифтом.

Кручение может не работать, хотя иногда встречаются рабочие.

Используя привязки муверов друг к другу Вы увидите, что это направление имеет огромный потенциал. С помощью привязки Вы сможете делать поразительные вещи, не прибегая к помощи скриптов!

События муверов

Ниже описано несколько полезных событий муверов.

Первый тип событий - это когда что-то или кто-то запускает мувер. В разделе Movers окна свойтсв (Mover Properties) есть две опции: BumpEvent и PlayerBumpEvent. BumpEvent - событие возникающее каждый раз при запуске мувера кем-либо (игроком, объектом и т.д.), в то время как событие PlayerBumpEvent возникает в следствие запуска только игроком.

Второй тип событий - те же что использовались для датчиков (Triggers). В окне свойств, выберем пункт Events. Когда Вы введете в поле Event имя события, оно будет вызвано при достижении мувером своего последнего кадра-ключа. С помощью этого Вы можете создать кнопочку, являющуюся мувером, которая заезжает в стену при нажатии, и как только кнопка достигнет своего последнего положения откроется дверь. В данном случае датчики не понадобятся.


Группа возврата (ReturnGroup)

Группа возврата (ReturnGroup) - неизвестная большинству мапперов, но играющая очень важную роль для муверов, настройка. Используется для разбиения муверов с одинаковыми именами (Tags) на подгруппы.

Если у мувера при движении возникло препятствие, то в зависимости от настроек, мувер либо остановиться, либо вернется, либо проигнорирует препятствие, либо просто-напросто раздавит препятствие (игрока) - в данном случае не имеет значение какое поведение выбрано (см. настройку MoverEncroachType). Итак, допустим, у Вас имеется несколько муверов с одинаковыми именами (Tags), и один из них был каким то образом заблокирован при движении. В этом случае все муверы соответствующей группы либо остановятся, либо вернуться, либо.... Во избежании подобного поведения единственный выход распределить каждый мувер в отдельную группу возврата (ReturnGroup). Теперь все муверы одной группы (т.е. с одинаковыми Tags, активирующиеся одним общим датчиком, и.т.д) не будут при блокировке одного из них реагировать на поведение своего "брата".

Предупреждение: когда Вы добавляете мувер, вне зависимости от их количества, имя устанавливаемое по умолчанию будет Mover. Это означает, что все муверы будут иметь один и тот же Tag (ну если Вы, конечно, не поменяли имя вручную), и соответственно будут членами одной группы. Поэтому, если Вы очень удивлялись странному поведению, скажем, дверей при блокировке лифта на одном уровне, причина кроется именно в группе возврата.

При наличии нормальных муверов с различными именами (Tags), но имеющих одинаковую группу возврата, они также будут останавливаться и возвращаться вместе.

Еще некоторые свойства муверов

Ниже перечислены все свойства муверов, которые не рассматривались ни в одной из вышеприведенных глав:

    * bDamageTriggered - мувер активируется при нанесении ему повреждения, количество которого устанавливается в поле DamageThreshold. Работает только при InitialState установленном TriggerOpenTimed или TriggerToggle. Чтобы узнать урон, наносимый оружием в Unreal Tournament, а также узнать больше об InitialState, веринесь к главе Муверы с датчиком (Triggered Movers);
    * bSlave - делает текущий мувер "рабом" другого мувера. Еще один способ привязки муверов друг к другу. Эффект при этом тот же что и при использовании AttachTag мувера;
    * bUseTriggered - скорее всего эта фишка была задумана для активации мувера путем нажатия кнопки на клавиатуре, как это сделано, например, в Half-Life. Но в финальной версии Unreal, от ее реализации отказались;
    * DamageThreshold - укажите здесь количество повреждения, необходимое для активации мувера (имеет смысл только при bDamageTriggered равном true);


Часть III

Дверь, открывающаяся при нажатии кнопки

Это будет обычная дверь, которая открывается при нажатии кнопки. Кнопка, в свою очередь, также как и дверь является мувером. При нажатии она выглядит "утопленной" в стене, а затем возвращается в свое исходное положение. При этом датчики не понадобятся.

Для начала построим две комнаты и дверь, соединяющую их между собой. Установим InitialState двери в положение TriggerToggle или TriggerOpenTime, а имя дадим ей Door. Теперь добавим мувер в виде кнопки где-нибудь рядом с дверью. Кадр-ключ0 (Key0(base)) кнопки укажем снаружи стены, а Key1 - внутри стены ("утопим" чуть-чуть кнопку в стене). В поле Event введем Door. Здесь можно также воспользоваться BumpEvent вместо обычного Event - тогда событие возникнет при прикосновении к кнопке, а не по достижении ею последнего кадра-ключа. Обратите внимание на наличие красной линии проведенной из кнопки к двери.

Теперь сделаем такую же кнопку с другой стороны (для того чтобы можно было открыть дверь находясь и в смежной комнате) и произведем те же манипуляции со свойствами.

Мувер как отдельный класс (использование статик меша как мувера)

В PostED также присутствует отдельный класс Mover. Для его вызова выберите в броузере актеров: Mover->SplitMover. Добавьте его на карту, затем откройте свойства.

В разделе Display поставьте DrawType в DT_StaticMesh. Ниже в строке StaticMesh установите нужный статик (предварительно выбрав его в броузере статиков). Все - задача выполнена. Все остальные настройки идентичны вышеописанным.

Удачного мапперства!


Источник: http://www.unrealscript.narod.ru
Категория: PostED и модостроительство | Добавил: postalworld (02.11.2008)
Просмотров: 3986 | Комментарии: 5 | Рейтинг: 5.0/2
Всего комментариев: 5
5  
ктонибуть помогите мне я не могу найти кнопку add mover я нашол только add mover brush (пладформа со стрелками) жму на эту кнопку ПКМ а там в списке нет LoopMover что делать помогите help help help

4  
dry

3  
спасибо огромное но я чето не могу зделать крутящйися меш тфу ты меш мувинг вродебы все делаю как здесь сказано но чето винт не крутится помагите плиййз help help help

2  
Эхххх.... Не получилось у меня.... На кнопку мувера он собака выводит сразу мувер с статик мешем... что делать? или У вас какой - то постэд особенный??? angry

1  
О!!! Спасибо. Всю жизнь лепил Static mesh'ами... эххх если-бы знал, что можно так... Спасибо еще раз. biggrin biggrin biggrin

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]