Система передвижения |
Автор: Administrator |
27.05.2011 22:55 |
Данное руководство поможет Вам обеспечить анимацию передвижения, само передвижение объекта в любом направлении и на любой поверхности. Файлы Перед началом урока скачайте данные файлы http://unity3d.com/support/resources/files/LocomotionSystem.zip
Первые шаги
Вы так же можете использовать свои скрипты вместо данных.
Использование системы передвижения Давайте воспользуемся системой передвижения
Этот Source Animations массив в Leg Controller компоненте включает все анимации для работы с Locomotion System . Он включает:
В Quick Start Guide мы сначала проверим Систему Передвижения только с несколькими анимациями, чтобы начать быстро и увидеть, как это выглядит. Тогда мы будем добавлять больше анимаций и смотреть, как это улучшает движения персонажа.
Вы можете теперь сделать окружающую среду немного более интересной, добавляя наклонные поверхности, маленькие и большие предметы и шаги, и т.д. Две вещи важны для определения, какие большие шаги персонаж может иметь:The Step Offset значение в Character Controller и Max Step Height в Leg Animator .
Если Вы хотите позволить персонажу не только идти вперед но также и стрелять всторону или пятиться, Вы можете добавить Aim Look Character Controller скрипт (находится в Assets > Character Controller Scripts > AimLookCharacterController). Отметим снова, что это не часть Системы Передвижения , и Вы можете также управлять направлением ходьбы в своих собственных проектах просто управляя движением и вращением персонажа. Aim Look Character Controller требует, чтобы Вы определили две новые оси, названные Horizontal2 и Vertical2 во входных установках. Использовать меню Edit > Project Settings > Input. Вы можете например позволить старым осям управляться только клавишами курсора, а новыми осями управляться A, D and S, W. Добавление бега У нас сейчас есть идущий персонаж, использующий только одну начальную анимацию и одна анимация цикла прогулки. Прогулка не выглядит полностью реалистической. Это главным образом потому что персонаж фактически перемещается быстрее чем это было бы с родной скоростью, которая соответствует циклу прогулки.
Native Speed переменная - скорость, которая соответствует данному циклу прогулки лучше всего. Native Speed имеет 0.7 для WalkForward анимации Hero . Это означает, что он должен переместиться со скоростью 0.7, чтобы отлично соответствовать анимации .
Всегда удостоверяйтесь, что анимации, которые вы делаете , соответствуют тому как быстро вы хотите, чтобы персонаж переместился в игре. Система Передвижения определяет родную скорость циклов прогулки и бега, которыми управляет, анализируя, как быстро ноги перемещаются, когда они являются самыми близкими к основанию. В анимациях высокого качества ноги перемещаются с постоянной скоростью, в то время как они, как предполагается, находятся на основании. Это так, потому что для данной прогулки или бега, основание должно перемещаться с постоянной скоростью относительно персонажа.
Обратите внимание, что если у вас персонаж идет в одном направлении а,бег в противоположном направлении,то персонаж будет поварачиваться боком во время поворота,по всему своему радиусу(мелкает экран).Это поисходит потому,что прямо персонаж двигается быстрее,чем назад,в результате чего происходит столкновение анимаций.Хотя Normal Character Motor несет ответственность за такое поведение,на самом деле за это отвечает Locomotion System.В Locomotion System можно легко повысить реалистичность при ходьбе и беге.В реальной жизни человек не сможет сделать такой оборот и бежать в другом направлении! При использовании геймпада,такие как Xbox 360 Controller, корость ходьбы/бега может регулироваться с помощью аналогового стика.Если используется только клавиатура,то заставить бежать вашего персонажа можно нажав на кнопку shift. Это является функцией Platform Character Controller основная функция которого,является обработка внешних данных.Стандартная скорость в анимации WalkForward составляет на 25% медленее стандартной скорости бега RunForward, попробуйте установить в Walk Multiplier настройки Platform Character Controller в значение 0.25. Использование дополнительных анимацийДо этого мы использовали в модели всего три анимации.Чтобы движения выглядели более реалистично при ходьбе,беге вперед и назад,вы можете добавить дополнительные анимации. (Если хотите,то вы можете пропустить этот раздел.)
Теперь персонаж ходит и бегает с большим реализмом во всех направлениях. Система автоматически смешивает все выбранные анимации друг с другом.При отсутствии анимации движения назад,доступны Also Use Backwards и эти настройки должны всегда быть включены для движения вперед,даже если персонаж не должен двигаться назад.В таком случае Unity будет использовать анимацию движения вперед,как анимацию движения назад,смешивая анимации для большей реалистичности.Таким же способом можно использовать анимацию стрельбы из левой руки и преобразовать ее в анимацию стрельбы из правой руки.Отметьте все как выше в Also Use Backwards Дополнительные возможностиЭтот раздел содержит следующие части:
Смешивание и скрещивание анимаций До сих пор Locomotion System контролировало персонажа при ходьбе и беге.В этом разделе мы ближе рассмотрим такие функции,как смесь анимаций и плавный переход между ними. Locomotion System использует Группы Движения(motion groups). Motion Group является группой анимаций, которыми можно управлять.Motion Group может иметь один или несколько типов анимации Walk Cycle и Grounded.Motion Group не должна содержать две анимации с одинаковой скоростью. Именно поэтому они должны иметь не более одной бездейственной(idle) анимации,а бездейственные анимации всегда имеют скорость раную нулю. Motion Groups может быть использован для указания группы анимаций с тем же стилем.Затем анимации могут контролироваться с помощью скриптов,в то время как основыне функции анимации будут распределяться атоматически Locomotion System. В предыдущих разделах мы создали все анимации в Locomotion System в Motion Group с именем "locomotion".Locomotion System организует анимации с теми же названиями Motion Group на остальные группы, поэтому в нашем случае мы имеем одну группу движения,она называется "locomotion". Имя "locomotion" было взято для примера.Вы можете задать другое имя. В ваших собственных скриптах Locomotion System может смешивать анимации, используя название группы,для примера: animation.CrossFade("locomotion",0.5f); Это будет затухание в Locomotion System длительностью в одну секунду. Она будет также автоматически постепенно затухать, если другие анимация закончились. Точно так же оно работает и с другими анимации. Вы также можете установить непосредственный вес, так же как и для других анимаций: animation["locomotion"].weight = 0.8f; Смешивание,затухание анимации,и вес работает точно также и для других анимаций. Однако,Locomotion System не совместима с функциями CrossFadeQueued и PlayQueued. Эти функции могут быть использован для анимации, которые влияют только на верхнюю часть тела,но они не должны быть использованы с анимацией, контролируемой Locomotion System. Также отметим, что отдельные анимации в Motion Group не должны обрабатываться вручную; Locomotion System не будет обрабатывать их. Анимации, которые не входят в Motion Group бывают двух видов: Те, которые обрабатываются Locomotion System и те которые нет.
Скрипт JumpAndIdle.cs показывает, затухающую анимацию во время прыжков,а также затухающую анимацию,когда персонаж неактивен .Попробуйте это:
Hero не имеет нормальной анимации прыжка,так как AimIdle анимация сделана ради демонстрации.
Попробуйте подпрыгнуть нажав кнопку Пробел. (Это требует специальных настроек внешних данных,реагирующих на Пробел.)остановитесь и ничего больше не нажимайте.Персонаж замрет,а после почешет голову(анимация которую мы добавили выше). Опора на окружающие предметы При ускорении, персонаж часто опираются на предметы, чтобы избежать падения.Это включает в себя несколько особенностей,напрмиер,при подъеме,персонаж слегка наклоняется вперед,или немного идя боком на неровной поверхности. Locomotion System не поддерживает использование конкретной анимации для ускорения.Однако,Locomotion System имеет специальные параметры,направленные на ускорение.
В реальном мире, опирание происходит не только при разгоне, но и при ходьбе вверх или вниз по склонам (Только для персонажа с двумя ногами!).Locomotion System работает в двух режимах контроля:склоны и поднятие вверх.
Адаптация к особенностям поверхности для моделей имеющих больше двух ног Существа с более чем двумя ногами,передвигаются иначе, чем люди и другие двуногие.Обычно существо выравнивает свое тело относительно земли.Locomotion System имеет две простые настройки для таких персонажей. В Leg Animator параметры Ground Hug X и Ground Hug Z выравнивает тело по осям X и Y относительно земли. Для них обоих, значение 0 означает отсутствие согласованности в то время как 1 означает полное согласование. Обычно используются 0 или 1 для каждой оси, но в некоторых случаях могут использоваться большие значения.
Адаптация к особенностям поверхности работает вместе с описанным опиранием на тяжелые предметы (наклон) в предыдущей части. По своей конструкции, наклон только влияет на оси,которые полностью не касаются земли . для примера,собака с Ground Hug X: 0 и Ground Hug Z: 1 может опереться боком (вдоль главной оси Х) когда бежит,или входит в крутой поворот, но никогда не наклоняется вперед или назад (вдоль главной оси Z ).
This document copyright (c) 2008, Rune Skovbo Johansen & Unity Technologies ApS Доперевел на русский язык LP_Furiors. Исправил ошибки в тексте Поляков Сергей(GoodWin) специально для сайта http://unity3d.vx0.ru |