Здравствуйте. Вы находитесь на сайте Unreal Level.
Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War.
Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
Этот туториал об основах анимации в Unreal Engine 3. Если у Вас уже был опыт работы с муверами в старых версиях движка, то обратите внимание, что сам принцип изменился не много, зато появилось намного больше возможностей. Возможность создания муверов с большим количеством ключей, но зато установка мувера стала значительно сложнее и вся система управления муверомпереместилась в Matineeи кисмет. Мувером может быть что угодно, двери, лифты, камеры и другие всевозможные акторы. В нашем случае, мы создадим движущеюся платформу. Создайте или загрузите любую локацию, в которой мы будем проводить урок, это может быть просто вырезанный куб. Далее создайте из браша платформу и конвертируйте её в статкмеш, или выберите в Generic браузере статик меши кликните на карте правой клавишей мыши Add Actor -> Add InterpActor... Разместите наш "лифт" на полу - это будет точка его старта.
Затем откройте кизмет (кнопка с зеленым символом K - верхняя инструментальная панель) удостоверьтесь, что установленный лифт на карте выделен. Щелкните ПКМ где-нибудь в окне Kismet и выберетеNew Event Using InterpActor_0 => Mover.
Появилось условие Мувера и матинэ. Кликните два раза по Matinee,
Откроется UnrealMаtinee– редактор анимации актеров. Тут уже есть для нашего мувера Группа с вложенным в нее Movement треком - тут задается траектория движения мувера. Другой важный элемент в Matinee - время анимации. Оно задается маленькими кранными треугольниками на таймбаре, их здесь всего 2 (чтобы увидеть их, если Вы зашли в матинэ в первый раз, нужно немного "отъехать", это можно сделать колесиком мыши). Определите, сколько вашему лифту необходимо времени для подъёма (спускаться он у нас будет такой же анимацией как и поднялся, т.е. будет эта же анимация, но в обратном направлении), у меня будет длятся анимация 6 секунд, я первый треугольник оставил на месте, в 0.00, а второй переместил, зажимая на нем ЛКМ до 6 секунд. Теперь выделите поле Movement и сравняте чёрный ползунок с черточкой определяющей данное время, на 1 секунду и добавьте ключ. Ключ добавляется кнопкой Add Key или клавишей Enter. Мы зафиксировали наш лифт в этой точке (на полу). Теперь добавим вторую - конечную точку. Переместите черный ползунок в 5 секунд, добавьте ключь. Вернитесь в редактор не закрывая окно Matinee, поднимите Ваш «лифт», на ты высоту, которая Вам нужна, или можете просто сдвинуть его, это неважно, главное переместить его в другую точку.
Теперь вы можете посмотреть на движение вашего мувера, нажав кнопку Play в Matinee, но при этом не забудьте перетащить черный ползунок в начало анимации.
Всё, теперь можете закрыть Matinee , на данном этапе ваш лифт еще не закончен. Он не будет двигаться если Вы наступите на него. Это потому, что InterpActor не просчитывает столкновения. Откройте его свойства и настройте его как на скриншоте (описать в падлу):
Вы, наверное, заметили, что Ваш лифт не освещен. Добавьте дополнительнона карту лампочку или отредактируйте свойства рядом стоящих и активируйте параметр Dynamicв свитке LightingChannels, вы также можете задействовать параметры bCastCompositeShadow и bCastDynamicShadows,тем самым активируя динамические тени, но учтите, что это пагубно скажется на производительности.
Как вы, наверное уже заметили при работе, наш лифт не издал ни единого звука, сейчас мы это исправим.
Зайдите в Generic браузер и поставьте галочку напротив SoundCueи откройтефайл...Unreal Tournament 3UTGameCookedPCSoundsA_Movers.upc
В A_Movers откройте группу Elevators, это всё звуки которые принадлежат именно лифтам (элеваторам) в названии каждого звука присутствует принадлежность к какому либо материалу _Metal_ -метал, _Wood_ - дерево, _Stone_ - камень, то есть если у вас лифт деревянный или металлический выбираете соответствующий звук. Далее, представьте себе лифт издающий один и тот же звук, на разных этапах своего перемещения, а их как минимум два, подъём вверх и спуск, выглядеть это будет, мало того ,что некрасиво, но и нереально, поэтому все звуки элеваторов в генерик браузере имеют в конце своего названия приписку- принадлежность к какому либо этапу, например за начало и конец старта элеватораотвечают _OpenStartи_CloseStart, а за возвращение в исходное положение _OpenStopи _CloseStop, за ровное и медленное перемещение отвечают файлы с припиской _Loop.
Откройте настройки своегомувера и разверните свитокInterpActor
Назначим два трека, на подъём и спуск лифта, выделите в генерик браузере один из понравившихся звуков с параметром _OpenStart, снова вернитесь в окно настроек мувера и напортив OpenSoundнажмите кнопку с зеленой стрелочкой, после этого Вы увидите появившеюся запись подобного рода
Далее, выберите звук с конечным параметром OpenStopи назначте его напротив CloseSound.
Всё ,теперь можете зайти на карту в игре и проверить свой лифт на наличие звуковых эффектов.
Всё теперь у вас есть полноценный лифт!
Двери
С созданием дверей будет по сложнее , дело в том что, представьте себе такую ситуацию, вы подбегаете к двери, попадаете в зону действия триггера активирующего дверь, дверь открывается, но по каким-то геймплейным причинам, возникла ситуация, что Вы в другое помещение за дверью, не прошли и дверь закрылась, и если вы еще находитесь в зоне действия триггера ,то дверь не откроется, для того чтобы дверь снова открылась Вам необходимы выйти из зоны триггера и войти в неё снова, сами понимаете в игре это непростительный баг, чтобы решить эту проблему нужно создать второй триггер, резервный, который будет иметь радиус действия значительно меньший чем у основного, лучше всего если это будет триггерволюм, пусть он будет чуть толще чем толщина вашей двери.
triggervolume – резервный триггер, должен быть заблокирован в тот момент когда основной триггер активен, чтобы игроки не активировали одновременно 2 разных триггера.
Непрерывно анимация
Здесь всё значительно проще, Создайте мувер также как Вы это делали в предыдущих уроках, в кисмете добавьте NewEventLevelStartup и объедините его с Play Matinee. LevelStartup– обозначает что мувер придёт в действие сразу же как только загрузится уровень в игре.
Непрерывно вращающаяся анимация
Если вы хотите сделать так, чтобы ваш мувер вращался вокруг своей оси, то вам даже не надо прибегать к кисмету, просто откройте свойства своего меша, разверните свиток MovementRotationRate и задайте параметр по своему усмотрению в любой из осей , большее число, более высокая скорость вращения, далее там же в Movementперейдите к пункту Phisics и измените параметр PHYS_Interpolating на PHYS_Rotating. Всё.
Объединение двух и более муверов
Если Вы захотите объединить 2 или более муверов, то откройте настройки одного из них или всех необходимых, которых надо присоединить к анимированному, заблокируйте окно настроек посредством кнопки вверху с изображением замка, далее выделите главный мувер, тот к которому хотите присоединить, вернитесь в закрепленное окно настроек, перейдите в свиток Attachment, пунктBase и укажите выделенный второй мувер, нажав на зеленую стрелку. Поставьте, если нужно, галку на Hard Attach.
Слово movers можно было перевести как двигатели) Кстати это статья по редактору UT3 и к udk она частично не подходит)
Тот же Generic Browser в udk носит название Content Browser и множество пунктов меню уже перенесены в другие места. Это я к тому, что зачем переводить старые статьи по редактору ut3, когда есть куча актуальных статей по udk? Хотя это лучше чем ничего и поможет многим очень во многом разобраться. Поэтому и на этом спасибо)
вообще с UEd4 никто не уходил Сделал лифт в UDK, НУ НИКАКОЙ РАЗНИЦЫ, не знаешь не говори. (единственное отлифие, того что нет строчки добавить InterpActor, или я ее не нашел, но всеравно, добавив ститик, его можно в него превратить)
mover должен оставаться mover'ом, а по тексту можно обозначить его условно как угодно, важно, чтобы читатель далее понимал, о чем идет речь добавить интерпрет. актера действительно нельзя, необходимо добавлять статичную модель и конвертировать ее Collide прав - писать статьи для удк надо основываясь на нем самом же, в ue3 и ue3.5 есть существенные различия, причем, по моим наблюдениям, не только визуально, но и на уровне кода - это стоит учесть
в скрипте udk есть различия в использовании основных переменных базовых функций и методов, я столкнулся с этим сразу, уже когда только взялся за изменение вида камеры вроде есть различия и в unreal kismet, но какие точно, немогу сказать
Затем откройте кизмет (кнопка с зеленым символом K - верхняя инструментальная панель) удостоверьтесь, что установленный лифт на карте выделен. Щелкните ПКМ где-нибудь в окне Kismet и выберете New Event Using InterpActor_0 => Mover.
Ну не в какую не хочет мой лифт ездить. Все сделал как в уроке, правда на UDK есть небольшие отличия, например в Матине не было изначально никаких папок, но их я создал. В матине лифт движется, когда я на плэй нажимаю. А вот в игре не ездит. Подозреваю это связано вот с этим: FACH
единственное отличие, того что нет строчки добавить InterpActor, или я ее не нашел, но всеравно, добавив ститик, его можно в него превратить
Когда я создал статик меш, то в свойствах выбрал convert- mover. После этого мой статик стал называться InterpActor. Я так понял, что это и нужно было. После всего выставил в свойствах галочки от столкновений как на скриншотах, но лифт падла все равно не ездит. Подскажите в чем может быть причина?
В матине и нет папок, если в кизмете его отдельно создать, а если сделать как в туторе, будет группа Интерполейта и мувер трек. Все сделал правильно. Упустил 1 момент, который даже в ФАКе есть. Чет не написал я его тут, видно по стандарту в UE3.0 стоит. В свойствах Mesh нужно раскрыть вкладку Physics из списка выбрать значение Interpolating...
У меня в свойствах во вкладке Physics только вот такая строчка - allow fluid surface interaction. А вот во вкладке movement есть строка Physics и там стоит значение PHYS_Interpolating. Думаю это оно. Но лифт все равно не едет. Может я в матине чего то не так сделал, потому что я его вызвал, как в уроке, двойным кликом в кизмете. А папок там всеравно не было никаких. Я там создал Nev Empty Group, а затем в ней Add Nev Movement Trac. Ну а дальше все как в уроке пошло ключи и т.д. ЗЫ: А как тут можно скрин выложить, наверно проще было бы объяснить чего я там набурагозил )).
Вот , ты просто не выдилил лифт когда добавлял Mover и матине само добавляется и в матине есть папочка MoverGroup с Mover . Вот тебе образец http://depositfiles.com/files/w7i3y65ze
Хмм, во истину цифровой мир полон чудес )). Brain, и все таки лифт я выделил при добавлении mover, но получил то что получил. Твой файл у меня не открывается выдает ошибку и все закрывается. Но ты меня навел на мысль. В общем я в кизмете выделяю Mover и ПКМ, из контекстного меню выбираю первую строчку Assign InterpActor_0 To Event(s). После этого мой Mover переименовывается в InterpActor_0 Mover и лифт начинает ездить как миленький )). А вот почему созданный мной мовер при выделенном лифте сразу не стал так называться я все равно не понял. Brain, спасибо за помощь.
KPD, ты создал блок Мувер в кизмете пустым, т.е. не привязан у тебя тот блок к твоему интерпактору. Он у тебя тупо не работает. Brain, я те еще раз говорю, не знаешь точно в чем дело - лучше не говори ничего.
Подскажите где находится TriggerVolume, как его создать и как изменять размер зоны действия триггера. С одним Триггером у меня дверь открывается, но не закрывается. Даже если я покидаю зону действия триггера. Хотя собственно как узнать то где эта зона заканчивается?