Реклама

  • Страница 1 из 1
  • 1
Killing Floor Форум » Killing Floor Форум » Игровое редактирование Killing Floor » KF SDK: Муверы (Двери, лифты и многое другое)
KF SDK: Муверы
slipe777Дата: Вторник, 08.Мая.2012, 13:47 | Сообщение # 1
Полковник
Группа: Заблокированные
Сообщений: 181
Статус: Offline
В этой статье:
- Создание муверов.
- Триггеры и Event > Tag система.
- Свойства муверов.
- Примеры различных муверов.


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

Создание

Начнем с самого простого. Выберем в Static Mesh браузере меш (дверь например) для будущего мувера.
Можно также сделать его с помощью Solid брашей, конвертировав их в статик.



Теперь следует нажать ПКМ на кнопку Add Mover Brush , выберем обычный Mover.

Он появится внутри браша-билдера, так что их Pivotы будут совпадать



На 2D экранах мувер имеет розовые контуры.
Созданная дверь имеет закрытое положение, переместим её в нужное место и настроим размер с помощью DrawScale3D.



Закрытая дверь имеет ключ 0, начальное положение. Что бы дверь могла открыватся требуется утановить положение 1, в котором она будет открыта. Для этого следует щелкнуть по двери ПКМ и выбрать Mover > Key 1, после чего передвинуть/повернуть её в положение, в котором она будет открыта.



Тип активации

Настроить тип активации муверов можно в свойствах во вкладке Object, здесь основным параметром является InitialState.



Из них актуальные:
ConstantLoop – Объект движется постоянно и не требует активации.
TriggerToggle – Мувер меняет положение, только если был активирован Eventoм (используется по умолчанию для всех дверей в Killing Floor).
TriggerOpenTimed – Мувер “открывается” Eventoм, по прошествии определенного времени возвращается в исходное положение.
BumpOpenTimed – Мувер “открывается” при контакте с ним, “закрывается” по прошествии определенного времени (используется по умолчанию для Mover).
StandOpenTimed - Мувер активируется, если на него станут, “закрывается” по прошествии определенного времени.

Триггеры

Триггеры - это активаторы, работают они по простой системе Event > Tag (событие > метка). Это по сути “кнопки” которые могут создавать событие (Event), активирующее что – либо с определенной меткой (Tag). Иными словами это устройство для запуска, и не только муверов.

У триггеров и муверов в свойствах есть вкладка Events. В свойствах триггера в поле Event пишется название события (можно придумать любое), а в свойствах мувера в поле Tag – метка.
Например:



Триггеры можно найти в Actor Class браузере, во вкладке Triggers.
Для дверей подойдут 2 типа триггеров. Это KFUseTrigger (есть также KFElevatorTrigger для лифтов) во вкладке UseTrigger и KFProxyTrigger во вкладке Trigger.



KFUseTrigger используется для стандартных дверей в KF (KFDoorMover), у которых тип активации TriggerToggle. С помощью него двери открываются и закрываются по нажатии кнопки использовать. Выглядит такой триггер как птичья голова и помещается в центр дверей, где будет индикатор заварки.
Рассмотрим свойства такого триггера.



Как видно из свойств, за сварку отвечает именно триггер, также двери могут быть закрыты на ключ.
Основными параметрами здесь являются:
MaxWeldStrength – Количество очков сварки необходимых для заварки двери на 100%.
ReFireDelay – Задержка в секундах до повторной активации триггера.
Message (во вкладке Use Trigger) – Сообщение на экране, когда игрок находится возле триггера и может его активировать. Если ввести “Press USE key”, то будет выдаваться стандартное сообщение, которое также будет переведено на русский язык при русской локализации.

KFProxyTrigger активируется при каком – либо взаимодействии с ним, имеет больше типов активации но не годится для завариваемых дверей.
Свойства:



bInitiallyActive – активен ли триггер изначально.
bTriggerOnceOnly – если True, то триггер может быть активирован только один раз.
ClassProximityType – взаимодействие с определенным классом при TT_ClassProximity.
DamageThereshold – урон необходимый для активации (только если активируется выстрелом)
Message – сообщение в углу экрана при взаимодействии игрока с триггером.
RepeatTriggerTime – время через которое действие триггера повторяется, не актуально для данного триггера.
ReTriggerDelay – задержка в секундах от активации до возможности повторной активации.
TriggerType – тип активации триггера, существуют несколько типов:
TT_PlayerProximity (активация при контакте с игроком);
TT_PawnProximity (активация при контакте с игроками, зомби и ботами);
TT_ClassProximity (активация при контакте с определенным классом, указанном в ClassProximityType);
TT_AnyProximity (активация при контакте с любым материальным объектом);
TT_Shoot (активация выстрелом, триггер при этом становится осязаемым для пуль);
TT_HumanPlayerProximity & TT_LivePlayerProximity (активация при контакте с игроком-человеком и живым игроком, что собственно одно и то же).

Свойства муверов

Муверы имеют довольно гибкие настройки, кроме того, они могут функционировать как триггеры создавая события. Рассмотрим основные свойства характерные для всех муверов.
Вкладка Mover:



bDamageTriggered – если True, то триггер (который содержит событие для данного мувера) будет активироваться выстрелом/ударом по муверу.
bTriggerOnceOnly – при True мувер может быть активирован только один раз.
BumpEvent – мувер может создать Event (подобно триггеру) при соприкосновении с ним.
BumpType – тип прикосновения, на который отреагирует мувер (Player – игрок; Pawn – игрок или AI; Any – любой объект)
DamageThereshold – минимальный урон, который необходимо нанести муверу чтобы активировать триггер, при bDamageTriggered = True.
DelayTime – задержка перед началом движения.
EncroachDammage – урон наносимый мувером при столкновении с чем-то, игроку наносится урон вдвое меньше указанного.
KeyNum – текущее положение, также переключается в выпадающем меню. В отличии от выпадающего меню, с помощью этого параметра можно установить больше 8 положений.
MoveEncroachType – реакция мувера на столкновение с игроком или зомби. Имеет 4 типа:
ME_Stop_WhenEncroach (движение останавливается);
ME_Return_WhenEncroach (мувер возвращается в предыдущее положение);
ME_Crush_WhenEncroach (мувер в буквальном смысле убивает препятствие);
ME_ Ignore_WhenEncroach (мувер продолжает движение).
MoverGlideType – тип ускорения. GlideByTime: мувер постепенно ускоряется; MoveByTime: скорость движения постоянная.
MoveTime – время за которое мувер проходит расстояние от одного ключа к другому.
NumKeys – количество ключей-положений. По умолчанию 2, но может быть установлено множество. Каждый отрезок пути проходится за MoveTime.
PlayerBumpEvent - аналогично BumpEvent создает Event, но только при контакте исключительно с игроком.
StayOpenTime – время, которое дверь остается открытой при типе активации OpenTimed.

Вкладки MoverEvents и MoverSounds:



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

Двери в KF создаются как KFDoorMover, они могут быть заварены и в них могут ломится зомби, для таких муверов есть дополнительные свойства.



bBlockDamagingOfWeld – если True, то сварка будет неразрушима и дверь можно будет открыть только при помощи сварочного аппарата.
bDisallowWeld – при True дверь нельзя будет заваривать.
bElevOuterDoorTop/Bottom– являются ли двери верхними/нижними дверьми лифта.
bKeyLocked – закрыта ли дверь на ключ.
bSmallArmsDamage - при True двери можно будет нанести урон не только гранатами.
bStartSealed – будет ли дверь заваренной в начале каждой волны.
bZombiesIgnore – будут ли зомби игнорировать эту дверь, если она заварена.
StartSealedWeldPrc – на сколько процентов будет заварена дверь при bStartSealed.
ZombieDamageReductionFactor– Получение урона от зомби. Чем больше значение, тем быстрее зомби её сломают.
Также здесь задаются звуки разрушения двери.

Примеры муверов

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

Обычная завариваемая дверь



Тип мувера: KFDoorMover
Тип триггера: KFUseTrigger


Все значения стандартные, двери задано 2 ключа-положения (0 и 1). Для данной двери за основу был взят Static Mesh двери из KF-Offices и были заданны те же самые звуки открытия и закрытия. Event триггера и Tag двери = Door1. В свойствах триггера MaxWeldStrength установлен на 200.

Двойная дверь, завариваемая в начале каждой волны.



Тип муверов: 2x KFDoorMover
Тип триггера: KFUseTrigger


С двойными дверьми все точно так же, но для них нужно по 2 отдельных мувера, каждый со своими ключами. Они должны иметь одинаковые свойства, одинаковый тэг и один KFUseTrigger. Для данной двери за основу взята двойная дверь из KF-BioticsLab.
Что бы дверь заваривалась в начале каждой волны для обоих муверов установлен bStartSealed = True. MaxWeldStrength здесь = 500.

Дверь закрытая на ключ



Тип мувера: KFDoorMover
Тип триггера: KFUseTrigger


От обычной двери отличается только двумя параметрами и наличием специального ключа. В свойствах двери необходимо установить bKeyLocked и bDisallowWeld на True.
Tag двери и Event триггера необходимо сделать одинаковыми. Ключ для двери можно найти в ActorClassBrowser, Actor > Pickup > KFKeyPickUp. Ключу необходимо ввести Tag (такой же как и у двери) в свойствах во вкладке Event.
К сожалению существует баг из за которого такую дверь можно взорвать обычными гранатами.

Дверь торговца



Тип мувера: KFTraderDoor
Тип триггера: нет (активируется с помощью ShopVolume)


Муверы данного типа не могут быть разбиты, заварены или взорваны. Они открываются и закрываются так же как и все муверы, в KF их зачастую используют в магазинах. Случайно выбранная зона магазина (Shop Volume) на карте по уничтожению волны создает Event подобно триггеру, по прошествии времени закупки Event создается повторно, закрывая дверь.

Двойная автоматическая дверь



Тип муверов: 2x Mover
Тип активации муверов: TriggerOpenTimed
Тип триггеров: 2x KFProxyTrigger
Тип активации триггеров: TT_PlayerProximity


Создается как обычная двойная дверь, но активируется с помощью Proxy триггеров, установленных по обе стороны двери. Когда игрок “наступает” на триггер, Event открывает двери. Благодаря типу активации, мувер не может быть повторно активирован, пока не “закроется”. Несмотря на TT_PlayerProximity, зомби тоже могут пользоватся такой дверью, но чтобы такая дверь не блокировала их пути необходимо в свойствах муверов во вкладке Collision установить bPathColliding = False.

Дверь открывающаяся выстрелом по кнопке



Тип муверов: 2x Mover
Тип активации муверов: TriggerToggle
Тип триггера: KFProxyTrigger
Тип активации триггера: TT_Shoot


Выстрел по триггеру активирует мувер – кнопку (Event = bt). Кнопка (Tag = bt) в свою очередь будучи нажатой открывает дверь. В свойствах кнопки во вкладке MoverEvents, OpenedEvent = Tag мувера – двери (ShootDoor). Event активируется, когда кнопка “откроется”. Чтобы триггер можно было активировать только один раз, в его свойствах установлено bTriggerOnceOnly = True.
bPathColliding двери = False.

Секретная дверь открывающаяся при получении урона



Тип мувера: Mover
Тип активации мувера: TriggerOpenTimed
Тип триггера: KFProxyTrigger
Тип активации триггера: TT_PlayerProximity (в данном случае не имеет значения)


Данный мувер был создан с помощью Solid браша, конвертированного в статик. В свойствах мувера bDamageTriggered = True. Данный мувер имеет 3 ключа (0-2), в свойствах мувера NumKeys = 3. После выстрела по такой двери, она сначала немного задвигается внутрь, потом открывается. Закрытие происходит по прошествии определенного времени.

Скейтборд прыгающий через трамплин



Тип мувера: Mover
Тип активации мувера: TriggerToggle
Тип триггера: нет (мувер сам себя активирует при контакте с игроком)


Данный мувер имеет 9 ключей. За одинаковый промежуток времени он проходит одинаковое расстояние (не считая подъем и спуск). Мувер активируется, когда до него дотрагивается игрок, PlayerBumpEvent = Tag. Что бы во время переключения от одного ключа к другому не наблюдалось торможение MoverGlideType установлен на MoveByTime. Со стороны выглядит немного кривовато, но это все таки обычный мувер.

Раздатчик



Тип муверов: 4x Mover
Тип активации мувера: TriggerOpenTimed
Тип триггера: KFProxyTrigger
Тип активации триггера: TT_ClassProximity


Очень простой механизм, внутри “приемника” расположен триггер который реагирует на брошенные деньги (Class’KFMod.CashPickup’). Дверцы приемника закрываются, в то время как открываются другие, за которыми появляется броня.

Подъемник – платформа



Тип мувера: Mover
Тип активации мувера: StandOpenTimed (активируется, когда на него наступают)


Лифты можно делать как и двери, которые открываются вертикально, но в таком случае ими смогут пользоваться только игроки, с чем связано много багов.
Лифты – платформы являются простейшими работоспособными лифтами и часто использовались в UT2004. От обычного мувера такой лифт отличается только наличием специальных точек – выходов(LiftExit) и точки – центра(LiftCenter), они находятся в Actor Class браузере во вкладке NavigationPoint.
LiftCenter помещается, как несложно догадатся в “центр” лифта – мувера, находящегося в позиции 0 и двигается вместе с ним, на этой точке AI будут стоять во время перемещения лифта. В свойствах LiftCenter, в одноименной вкладке указывается Tag лифта.
Точки LiftExit – это условные выходы, через которые боты будут проходить после окончания движения мувера. В их свойствах задается Tag лифта и SuggestedKeyFrame (при каком ключе – положении будет активен этот выход)

Обычный лифт (2 этажа)



Тип муверов: KFElevator, 2x KFElevatorDoorMover, 4x KFTraderDoor
Тип активации муверов: Elevator (лифт), TriggerToggle (Двери)
Тип триггеров: 3x KFElevatorTrigger


Разработчики ранее задумывали лифт в KF как таковой, в результате чего существует специальные муверы и триггеры. К сожалению с лифтами было связано много багов и ни на одной из официальных карт нет лифтов.
Такой лифт можно вызывать и он имеет двери, которые открываются/закрываются в зависимости от положения лифта.
Во первых нужно создать мувер – KFElevator и задать ему Tag и ключи – положения. В свойствах лифта, во вкладке KFElevator > ElevatorFloorTags нужно задать тэги для каждого ключа (Например BottomFloor для нижнего этажа и TopFloor для верхнего).
Далее нужно добавить триггеры для лифта (KFElevatorTrigger). Один помещается внутрь лифта (в начальном положении), ему задается Tag (например ElevatorLiftTrigger), который также нужно ввести в свойствах лифта (вкладка KFElevator, поле ElevatorCenterTrigger), этим триггером можно будет запускать лифт изнутри.
На каждый этаж также помещается KFElevatorTrigger. В зависимости от этажа на котором они расположены им задается Tag введенный ранее в ElevatorFloorTags (в свойствах лифта), с помощью этих триггеров лифт можно будет вызывать.
Добавляются точки LiftExit и LiftCenter, здесь все так же как и с подъемником – платформой, но в свойствах точки LiftCenter кроме тега лифта, к которому он принадлежит вводится еще тэг центрального триррега (KFElevatorTrigger помещенный внутрь).
Осталось сделать двери. Муверы типа KFElevatorDoorMover имеют недостатки, они могут быть поломаны или взорваны, так что лучшим вариантом является двери торговца, которые активируются KFElevatorDoorMoverами.
Создаются верхняя и нижняя условные двери лифта, как FElevatorDoorMover и помещаются куда-нибудь за карту, где они будут скрыты от глаз игроков.
Нижней двери в свойствах (вкладка KFDoorMover) задается ElevOuterDoorBottom = True. Верхней двери - ElevOuterDoorTop = True.
Во вкладке MoverEvents для каждой двери задается Closing и Opening события, которые будут приводить в действие нижние или вверхние двери лифта, сделанные в качестве KFTraderDoor (например BottomDoors для нижней условной двери лифта и TopDoors для верхней).
Делается по паре дверей торговца на нижний и верхний этаж, у каждой пары задан Tag, введенный в MoverEvents условных дверей.

Таким лифтом могут пользоватся и вызывать его не только игроки.

Уничтожитель



Тип муверов: 11x Mover
Тип активации муверов: 10x TriggerOpenTimed, BumpOpenTimed (рычаг)
Тип триггера: нет (активируется мувером - рычагом)


Нетрудно догадаться, для чего такая конструкция предназначена. На серьезных картах претендующих в белый лист конечно это будет лишним, но с такой штукой можно повеселится, к тому же она довольно легко делается и результат получается очень зрелищным.
В конструкцию входят:
- 3 пары крушителей;
- 2 циркулярных пилы;
- 2 держателя для пилы;
- 1 рычаг.
В свойствах пил и крушителей MoverEncroachType = ME_Crush_WhenEncroach, а также установлен большой EncroachDamage.
Рычаг имеет Event, приводящий в движение пилы с их держателями и первую пару крушителей. OpenedEvent первой пары крушителей запускает вторую пару, а та в свою очередь третью, в результате чего получается небольшая цепная реакция.
Что бы пилы вращались независимо от их активации, в их свойствах, во вкладке Movement был задан RotationRate по оси Yaw и установлен bFixedRotationDir = True.
По прошествии определенного времени все муверы возвращаются в исходное положение и могут быть активированы снова.

Вот собственно и все. Муверы - тема довольно интересная и при наличии фантазии можно создать уникальные вещи. Учитывая что игра разнообразием таковых не балует, ваша необычная идея обязательно запомнится игрокам. Удачи
 
Killing Floor Форум » Killing Floor Форум » Игровое редактирование Killing Floor » KF SDK: Муверы (Двери, лифты и многое другое)
  • Страница 1 из 1
  • 1
Поиск:
Лента обновлений
Случайные Файлы
Самые активные
  • DIMON
    количество постов — 1018
  • stalker
    количество постов — 785
  • Kowalsky
    количество постов — 383
  • Maximus
    количество постов — 262
  • Luponero
    количество постов — 239
  • J-Dog
    количество постов — 197
  • Sailor
    количество постов — 188
  • slipe777
    количество постов — 181
  • hater
    количество постов — 164
  • TT
    количество постов — 157