Добавлен , опубликован
Раздел:
Разное
Настоятельно рекомендую включить стиль StormTech или хотя бы XGM Classic - иначе читать неудобно =)

1.Простейшие муверы

Мы с вами начнём с создания простейшего мувера – подъёмника, который мы с вами видели на карте BR-Colossus.
Итак. Первым делом, убедитесь что вы запустили редактор и прочли статью для начинающих.
Затем давайте построим две большие комнаты, соединённые тремя коридорами.
Два из них давайте поместим на полу, третий – под потолком.
Не забудьте про лампочки!
Я также разместил оружие и здоровье в проходах, чтобы они имели хоть какой-то смысл=)
Получиться должно что-то вроде этого:
.

Размещение

Теперь, когда с полигоном покончено, можно приступить непосредственно к размещению лифта.
Муверы размещаются очень просто.
Достаточно нажать на кнопку Add Mover Brush, что расположена под кнопками типа Add, Subtract, Intercect, Deintersect.
Выглядит она как синяя плитка со стрелками в разные стороны:
Но подождите на неё нажимать, ведь сначала надо выбрать внешний вид лифта!
Для этого давайте воспользуемся окном Static Mesh Browser:
.
Здесь, в пакадже (Package, не знал как перевести) ShiptechHardware, находим модель STlift01 CS. Это и есть тот самый подъёмник с BR-Colossus!
Выделяем его название и спокойно нажимаем Add Mover Brush.Подъёмник появится в центре вашей активной кисти (Active Brush).
Если вам не нравится положение подъёмника или угол его поворота, поместите подъёмник куда надо (например, на полу перед верхним проходом).
Мувер помещён! Однако сейчас он ещё не будет никуда ехать, сколько на него не наступай.
Тут я должен немного рассказать о механизме работы муверов.
Движение мувера проходит по точкам, называемым ключами (Keys).
Нулевой ключ, также называемый базовым (base), является его начальной позицией.
Конечной позицией является ключ, прописанный в свойствах объекта, но об этом позже.
Управлять ключами до смешного просто.

Анимация

Нажав правой кнопкой мыши на наш лифт, в появившемся меню выберите подменю Mover. Перед вами откроется подменю, содержащее 8 ключей, включая базовый:
.
Теперь выберите пункт Key 1 и смело двигайте мувер в его конечную позицию (под потолком). Вот и всё! Вы создали мувер!
Обратите внимание, что если вы переключите мувер обратно в Key 0, выбрав соответствующий пункт подменю, он вернётся в исходное положение.
Следует помнить, что в игре мувер появится не в положении нулевого ключа, а в том положении, в котором он находился во время построения карты (Rebuild Level).
Поэтому рекомендую вам всё же вернуть его на базовый ключ.
Давайте создадим по тому же принципу ещё три подъёмника, дабы два подъёмника поднимали нас вверх с разных сторон прохода, а другие два опускали вниз.
Если вы раньше никогда не имели дела со статическими моделями (Static Mesh),
вы можете испугаться, ведь как только вы снимете выделение, мувер станет чёрным.
Не беспокойтесь - перестройка освещения исправит это, если конечно вы не забыли расставить лампочки :): .
Отлично. Теперь давайте займёмся дверями.
Двери бывают двух типов: отъезжающие и крутящиеся.
И все они создаются посредством муверов - просто одни из них в конечном кадре отодвигают, а другие поворачивают=).
Начнём с отодвигаемой двери. Для этого выберем ей модель или создадим свою.
Я для этого примера нарисовал дверь в 3DSMax`е.
После этого достаточно поставить дверь в проём, затем выбрать второй ключ, переместить её в стену, пол или потолок – это уж по вкусу, и вернуть в исходное положение, выбрав базовый ключ.
Вращающаяся дверь делается так же просто. Достаточно вместо задвигания повернуть её.
Разместим такие двери по обеим сторонам проходов.
Не забудьте поместить лампочки внутрь коридоров, ведь из-за поставленных дверей там теперь будет темно.
В итоге у меня получилось вот что:
.
Вот и всё! Теперь вы умеете создавать простые муверы, вроде дверей или подъёмников.
Можете разместить точки старта и протестировать карту.

Основные свойства

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

2.Боты

Порой бывает недостаточно поставить на уровень лифт или дверь, ведь боты не могут сами отличить их от декоративных объектов. Чтобы помочь им существуют три чудо-объекта: NavigationPoint.LiftCenter и NavigationPoint.LiftExit для лифтов и NavigationPoint.Door для дверей.
Использовать эти объекты довольно просто, хотя здесь не обошлось без мааленького подводного камня.
Вернёмся к нашей карте.

Лифты

В первую очередь давайте дадим имя лифту.
Для этого откроем одного из лифтов (выбрав в контекстном меню пункт Mover Properties (1 Selected) ) и в меню Events в поле Tag введём «Lift1». Здесь может быть любое слово, так как это идентификатор объекта. Повторите эту процедуру, дав лифтам названия типа «Lift1», «Lift2», «Lift3», «Lift4». Главное – не забыть, какой лифт как называется.
Теперь давайте разместим Navigation Point`ы по всей карте, дабы боты могли резвиться.
После этого, откроем окно Actor Browser. В нём раскроем пункт NavigationPoint и выделим там ***LiftCenter. После этого тыцнем где-нибудь на карте правой кнопкой мыши и в выпадающем меню нажмём «Add LiftCenter Here». Появится схематичный человечек со стрелкой вверх. Этого человечка следует перетащить так, чтобы он находился над центром лифта. Теперь в его (человечка) свойствах в меню LiftCenter введём в поле LiftTag имя того лифта, над которым он находится. Это даст ботам знать, что сей мувер является лифтом, а не дверью или там отбойным молотком. Однако пользоваться лифтом они пока не смогут. Давайте поможем им, добавив объект NavigationPoint.LiftExit** . Поместите этот объект на земле рядом с начальной позицией лифта.
Эта точка будет указывать им, куда они могут посредством лифта добраться. Теперь откроем свойства этого объекта. Там, в меню LiftExit, введём в поле LiftTag имя лифта, к которому он относится, а в поле SuggestedKeyFrame – номер ключевой позиции, на которой боты будут выпрыгивать из лифта к точке, указанной этим объектом. Например, если вы поставили LiftExit рядом с базовой позицией мувера, то параметр следует выставить в 0.
После этого поставим ещё один LiftExit рядом с конечной позицией лифта, и в его настройках в меню LiftExit введём в поле LiftTag имя лифта, а в поле SuiggestedKeyFrame – номер ключа конечной позиции. У меня это 1.
Теперь повторите эти операции со всеми остальными лифтами.
Вроде бы всё. Но погодите радоваться! При Попытке перестроить уровень выскочит ошибка типа «Mover associated with LiftCenter must not be BumpOpenTimed». Почему это происходит, я не совсем понимаю, но очевидно, что боты, как и я, не понимают что такое BumpOpenTimed, и поэтому пользоваться лифтом не будут.
Исправляется это просто. В свойствах мувера заходим в меню Object и там значение параметра InitialState меняем с BumpOpenTimed на StandOpenTimed. Это должно помочь.
Отлично! Теперь боты умеют пользоваться подъёмниками, но ведь есть ещё и двери!

Двери

С дверями всё ещё проще. Во-первых, нужно опять же дать дверям имена. Делается это, как и в случае с лифтом, вводом в свойства мувера, в меню Events в поле Tag строки, которая наиболее подходит для данного объекта, например «SlidingDoor1».
Далее. Откроем окно Actor Browser и в нём, раскрыв пункт NavigationPoint, выберем ***Door. После этого, нажмём рядом с дверью правой кнопкой мыши и в контекстном меню выберем пункт «Add Door Here». Появится значок двери. Теперь выделите его и откройте свойства. Там, раскрыв меню Door, в поле DoorTag** введите имя соответствующей двери.
Это даст ботам знать, что они способны пройти сквозь это препятствие, проявив немного терпения.
Вот и всё! Теперь сохраните карту, нажмите Build All и включите отображение путей, если оно выключено ( Это делается нажатием на пункт Show Paths в подменю View контекстного меню, что откроется вам при нажатии правой кнопкой мыши на название вьюпорта ). Можете полюбоваться на линии, изображающие пути ботов, и подправить, если что не так.

Дополнительные свойства объектов **LiftCenter**, **LiftExit** и Door

Вообще-то, назначение дополнительных свойств объектов легко понятно из названия.
Но на всякий случай перечислю основные из них:
Свойства LiftCenter – меню LiftCenter:
LiftTrigger – указывает на имя триггера, который активирует лифт. По умолчанию None.
Свойства LiftExit – меню LiftJump:
  • bLiftJumpExit – указывает ботам на то, что с лифта надо спрыгивать, а не просто сползать.
  • bNoDoubleJump – выставьте в true, и боты будут спрыгивать только одиночным прыжком.
Без использования предыдущего параметра смысла не имеет.
Свойства Door – меню Door:
  • bBlockedWhenClosed – используется, если дверь работает только один раз ( параметр TriggerOnceOnly в свойствах мувера ). В таком случае боты не будут пытаться пройти через дверь более одного раза.
  • bInitiallyClosed – говорит ботам, закрыта изначально дверь или нет.
  • DoorTrigger – указывает на триггер, управляющий дверью.
© hgl, 2007
`
ОЖИДАНИЕ РЕКЛАМЫ...