Главная > Игры > 3D Action >
Unreal Movers Tutorial [6/6]
Часть III
_______________________________________________________________________________
_______________________________________________________________________________

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

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

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

Это будет выглядеть примерно так:

\ картинка - стена, в ней дверь и две кнопки с разных сторон, вид сверху \
_______________________________________________________________________________
_______________________________________________________________________________

Поезд с кнопкой
_______________

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

Сообразите огромную комнату и сделайте в ней подобие рельсов. Затем создайте
мувер, выглядящий как поезд с кнопкой. Теперь сделайте так, чтобы он мог
перемещаться (укажите ему кадры-ключи):

\ картинка - кромадная комната, в ней - мувер-платформа \

InitialState поезда установите в TriggerToggle, а имя муверу дайте Train.
Добавьте датчик в упор к кнопке на поезде, и затем, зайдя в свойства датчика,
введите в полях AttachTag и Event имя поезда, т.е. Train. Датчик теперь будет
"привязан" к поезду и, соответственно, будет вместе с ним перемещаться. Иногда
могут возникать всякого рода проблемы, особенно если указать датчику маленький
радиус. Поэтому следует установить большой радиус. Если же Вы установите два
фиксированных датчика на обоих концах пути (имеется в виду на одой и на другой
станциях), то по прибытии туда поезда, он будет автоматически вызывать
реактивацию датчика. Выходом является привязка датчика непосредственно к самому
муверу поезда.

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

Теперь эти кнопки будут вызывать мгновенно поезд на станцию, даже если он
находится в движении. В мультиплеере это может нежелательно действовать на Ц С
игрока находящегося на поезде, в то время как два других тыкают одновременно
кнопки на разных концах пути. Для избежания подобных пагубных влияний на аксоны
и дендриты, воспользуйтесь Лифтовым мувером (ElevatorMover) для создания
поезда, и установите на нем две кнопки. ElevatorMover не слушается датчиков во
время движения. Единственный недостаток - Вы не сможете установить для мувера
звук.

Пример карты, DM-Train.unr, Вы можете найти в архиве.
_______________________________________________________________________________
_______________________________________________________________________________

Покачивающаяся на волнах лодка
______________________________

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

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

\ картинка - бассейн, у одного края стоит мувер-плот \

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

Теперь вырежьте комнату размером 256*256*256 где то за пределами Вашей карты и
поместите на полу датчик. Убедитесь, что радиус действия датчика
(CollisionRadius) больше чем комната, а высота действия датчика
(CollisionHeight) достаточна для  алийского кролика (NaliRabbit).

Добавьте в эту комнату кролика - установите его над датчиком, а в свойствах
установите настройку Physics в положение PHYS_Falling (подробнее см. главу
Зацикленные муверы (Looping movers)).

Также, сюда воткните маленький мувер и укажите ему следующие настройки:
InitialState сделайте TriggerPound, StayOpenTime и OtherTime равным 0.5,
MoveTime равным 1. Кадр-ключ1 (Key1) сделаем несколько ниже исходного положения

(Key0(base)), например, на 8 или 16 юнитов. Теперь, когда кролик попадет
(здесь: упадет) в радиус действия датчика, маленький мувер придет в движение.
Так как кролик сбежать никуда не может, то и движение будет бесконечно (для
живодеров: можете открыть консоль и ввести "killall unreali.nalirabbit" -
хороший был кролик).

В поле Event датчика введите Wiggle, затем это же имя дайте маленькому муверу
(в поле Tag). Также введите такое же имя и в поле AttachTag Вашей лодки.

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

Пример карты, DM-Boat.unr, Вы можете найти в архиве.
_______________________________________________________________________________
_______________________________________________________________________________

Лифт каким мы его знаем
_______________________

В этой главе подробно описана техника создания офисного лифта, обслуживающего
несколько этажей. В меню: четырехэтажный офис 8), лифт собственной персоной,
внутренние створчатые двери (двигаются вместе с лифтом), внешние створчатые
двери, четыре кнопки внутри лифта и по одной кнопке на каждом из этажей.
Для начала вырежьте четыре комнаты/этажа размером 256*1024*1024 (H*W*B
соотвественно), оставив прослойку из 128 юнитов между каждой из них. Теперь
сделайте лифтовую шахту на левой или правой стороне "офиса" на расстоянии
примерно 32 юнитов. Самый подходящий размерчик для шахты 1408*256*256. Осталось
вырезать 4 дырки на каждом этаже ведущие в шахту. Должно получиться что-то
очень похожее на это:

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

Для последующих построек отведите себе "мастерскую" - комнату вне вашей карты
размером 1024*1024*1024. Здесь Вам предстоит сконструировать мувер лифта. Сам
лифт будет представлять из себя кубик размером 256*256*256 с вырезанным внутри
него другим кубиком размером поменьше - 240*240*240. Поместим 4 кнопки на одну
из стен и воспользуемся текстурами с нарисованными на них номерами (из пака
Starship.utx) для их декорации.  е забудьте поставить галочку на опции Bright
corners в свойствах этих текстур для избежания некоторых проблем с освещением.
Теперь при помощи функции Пересечения (Intersect) создайте один цельный браш
будущего мувера:

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

Переместите активный браш в форме лифта в его исходное положение - на первый
этаж, нажмите добавить Лифтовой мувер (правой кнопкой на иконке AddMover, здесь
в списке выберете ElevatorMover). Укажите лифту 4 кадра-ключа для каждого из
этажей.  а скрине показаны все кадры-ключи мувера:

\ картинка - в шахте созданы ключи для лифта, для наглядности на каждом
  этаже нарисован мувер-лифт, на первом этаже - 0-и кадр и мувер выделен\

Откройте свойства мувера (ElevatorMover Properties), в пункте Objects
установите для InitialState значение ElevatorTriggerGradual. Имя (Tag) ему
дайте ElevatorMover.

Теперь установите 4 лифтовых датчика (ElevatorTrigger) внутри лифта для каждой
кнопки. В их свойствах найдите поле AttachTag и впишите туда ElevatorMover,
теперь датчики будут перемещаться вместе с лифтом. Радиус действия
(CollisionRadius) сделайте им маленький, например 25, так Вы не сможете
"нажимать" две кнопки одновременно. Воспользуйтесь Radii View для более точной
настройки радиуса. Также у всех датчиков в поле Event введите ElevatorMover, а
у каждого датчика в отдельности укажите GotoKeyFrame соответственно равным 0,
1, 2 и 3.

\ картинка - лифт сверху, возле каждой кнопки - датчик, они соединены с
  лифтом красными линиями\

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

штука 8). Для избежании путаницы поместите датчик с GotoKeyFrame равным 0 на
самый нижний этаж и т.д. Последняя вещь - лезем в их свойства (эх, все-таки
пришлось) и очищаем поля AttachTag - этим датчикам нет надобности кататься.

\ картинка - этажи сбоку, на каждом - датчик вызова лифта, все соединены
 с лифтом красными линиями \

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

Осуществить это можно только так: сделать двери тоже Лифтовым Мувером
(ElevatorMover), чтобы они могли кататься вместе с лифтом, а для
открытия/закрытия воспользоваться двумя отдельными муверами к которым и будут
привязаны створки двери.

Создайте браш двери - в этом примере сделаны маленькие окошечки в створках, и
поместите его в положение показанное на скрине ниже. Затем добавьте его как
Лифтовой Мувер. Теперь добавьте точно такой же, но с другой стороны - это же
двухстворчатая дверь. Обеим дверцам укажите такие же кадры-ключи что и у кабины
лифта, а InitialState установите ElevatorTriggerGradual. Также не забудьте дать
обеим створкам одно и то же имя (Tag): idoors.

\ картинка - лифт, в него помещены два мувера-створки, ни сомкнуты\

Скопируйте (duplicate) ВСЕ лифтовые датчики, и поместите их ТОЧ О в то место,
где находятся старые, в поле Event всех датчиков укажите событие idoors (самый
быстрый способ это сделать - нажмите правой кнопкой мыши на одном из лифтовых
датчиков, в меню выберете select all ElevatorTriggers, при этом все датчики
окрасятся в зеленый цвет. Теперь нажмите опять правой кнопкой мыши на любом из
них и щелкните на Скопировать (Duplicate). После этого все вновь появившиеся
датчики тоже будут отмечены (selected) - что Вам наруку. Откройте свойства
сразу всех датчиков и перейдите к полю Event. Здесь впишите idoors. Затем
осталось только переместить их в нужное положение. Это сделать не сложно, т.к.
при движении одного из них , остальные также будут перемещаться). Этим самым Вы
добьетесь того, что при "нажатии" кнопки в лифте или вне его, Вы на самом деле
будете активировать два разных датчика: один отвечает за перемещение лифтовой
кабины, другой - за перемещение обеих створок раздвижной двери. Так как
активация происходит одновременно, никакие проблемы с синхронизацией движения
мучить Вас не будут.

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

Key1 укажите для них такой:

\ картинка - створки добавлены точно за лифтом, они сомкнуты, но в
  положении Key1 - разомкнуты точно по внешней ширине лифта \

Затем верните их в положение Key0(base). Одной створке дайте имя idoor1, другой

- idoor2. InitialState укажите им TriggerControl. Теперь установите два датчика

место, показанное на скрине:

\ примечание - " вернуть в положение Key0", значит, указать им этот ключ в
  настройках а не двигать руками! \

\ картинка - невидимые двери в положении Key0, по центру между дверями
  лифта, установлены два датчика, напоминаю - все происходит на 1-м этаже \

Таким образом сделайте 8 подобных датчиков - по 2 на каждом из этажей. При этом
одному из них в поле Event укажите idoor1, а другому - idoor2. И так на каждом
этаже.

Теперь выберете одну створку двери внутри лифта, зайдите в свойства и в поле
AttachTag введите имя соответствующей створки вне карты: либо idoor1, либо
idoor2. То же самое проделайте для всех створок на всех этажах.

\ примечание - какого черта "для всех створок на всех этажах"! у лифта -
  одна пара дверей и те ездят вместе с ним! наверное описка автора \

Внешние двери - с ними попроще. Добавьте их на каждом этаже. Всего для них
будет использовано 8 муверов: по 2 на каждом этаже, т.к. они тоже
двухстворчатые.  ижним створкам дайте имена, например, odoor1.  а втором этаже
- имена будут odoor2 и т.д. Также всем им установите в InitialState значение
TriggerControl. Затем добавьте по одному датчику на каждом этаже - на том же
месте где Вы установили датчики для внутренних дверей. И последнее: укажите
всем датчикам соответствующий Event: датчику на нижнем этаже впишите odoor1, на
втором - odoor2 и т.д.

Теперь Ваша карта будет выглядеть примерно так:

\ картинка - вид сверху и сбоку - каша из муверов, триггеров и красных линий,
  перечислю муверы - лифт, пара дверей внутри лифта, по паре дверей на
  каждом этаже, пара невидимых дверей за шахтой лифта на 1-м этаже \

Если все сделано верно, то на Вашей уровне будет:
  3 Лифтовых мувера (ElevatorMovers) \ лифт и пара дверей \;
  10 нормальных муверов;
  16 Лифтовых датчиков (ElevatorTriggers);
  12 обычных датчиков;
И все это только для одного "офисного" лифта :(
Перестройте карту (rebuild), сохраните, перекреститесь и нажмите Ctrl+P.
Пример карты, DM-Elevator.unr, Вы можете найти в архиве.
_______________________________________________________________________________
_______________________________________________________________________________

Автор
_____

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

  Сайт: Lode's Unreal Zone
  Мыльница: hybrid6666@yahoo.com;
  Тетя Ася: 73177230

(c)2000-2001 Lode Vandevenne

Перевод сделан 32_Pistoleta с разрешения автора.


Страница 1 2 3 4 5 6 <<< Предыдущая Содержание


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

Copyright © 2001 - 2003 Olexandr Slobodyan.
Сайт создан в системе uCoz