Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Учебное пособие: Сценарий корневого движения для человекообразных анимаций "на месте"

Иногда ваша анимация появляется "на месте", что означает, что если вы поместите ее в сценуСцена содержит среды и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
, символ, который это включено. Другими словами, анимация не содержит «корневое движениедвижение корневого узла персонажа, независимо от того, контролируется ли оно самой анимацией или внешними средствами. . Подробнее
См. в Словарь
». Для этого мы можем изменить корневое движение из скрипта. Чтобы собрать все вместе, следуйте инструкциям ниже (обратите внимание, что существует множество вариантов достижения одного и того же результата, это всего лишь один рецепт).

  • Откройте инспекторокно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и отредактируйте значения. Дополнительная информация
    См. в Словарь
    файл FBX, содержащий встроенную анимацию, и перейдите на вкладку Анимация
  • Убедитесь, что Muscle Definitionпозволяет более интуитивно управлять скелетом персонажа. Когда Аватар на месте, система анимации работает в пространстве мышц, которое более интуитивно понятно, чем пространство костей. Подробнее
    См. в Словарь
    установлен на АватарИнтерфейс для перенацеливания анимации с одного рига на другой. Подробнее
    См. в Словарь
    , которым вы собираетесь управлять (допустим, этот аватар называется Чувак, и он уже добавлен в Просмотр иерархии).
  • Выберите анимационный клипданные анимации, которые можно использовать для анимированных персонажей или простых анимаций. Это простое «единичное» движение, такое как (один конкретный пример) «Простояние», «Ходьба» или «Бег». Подробнее
    Смотреть в Словарь
    из доступных клипов
  • Убедитесь, что Loop Poseпараметр анимационного клипа смешивает конец и начало анимации для создания плавного соединения. Подробнее
    Смотрите в Словарь
    правильно выровнен (индикатор рядом с ним зеленый), и установлен флажок Поза цикла
  • .
  • Просмотрите анимацию в средстве просмотра анимации, чтобы убедиться, что начало и конец анимации плавно совмещены, а персонаж движется «на месте».
  • На анимационном клипе создайте кривую, которая будет управлять скоростью персонажа (вы можете добавить кривую в Инспекторе импорта анимации Кривые-> +)
  • Назовите эту кривую осмысленно, например "Скорость бега".
  • Создайте новый Контроллер анимацииУправляет анимацией через слои анимации с помощью конечных автоматов анимации и деревьев смешивания анимации, управляемых параметрами анимации. На один и тот же контроллер Animator могут ссылаться несколько моделей с компонентами Animator. Подробнее
    См. в Словарь
    (назовем его RootMotionController )
  • Перетащите в него нужный анимационный клип, это должно создать состояние с названием анимации (например, Выполнить)
  • Добавьте в контроллер параметр с тем же именем, что и у кривой (в данном случае "Скорость выполнения").
  • Выберите персонажа Чувак в Иерархии, в инспекторе которого уже должен быть компонент Аниматор.
  • Перетащите RootMotionController в свойство Controller аниматора
  • Если вы сейчас нажмете кнопку воспроизведения, то увидите, что "Чувак" бежит на месте.

Наконец, для управления движением нам потребуется создать скрипт (RootMotionScript.cs), реализующий обратный вызов OnAnimatorMove:-

using UnityEngine; using System.Collections; [RequireComponent(typeof(Animator))] public class RootMotionScript : MonoBehaviour { void OnAnimatorMove() { Animator animator = GetComponent(); if (animator) { Vector3 newPosition = transform.position; newPosition.z += animator.GetFloat("Runspeed") * Time.deltaTime; transform.position = newPosition; } } }

Вы должны прикрепить RootMotionScript.cs к объекту «Чувак». При этом Компонент анимацииКомпонент модели, который анимирует эту модель с помощью системы анимации. Компонент имеет ссылку на ресурс Animator Controller, который управляет анимацией. Подробнее
See in Словарь
обнаружит, что скрипт имеет OnAnimatorMove и показать свойство Apply Root Motion как Обрабатывается сценарием

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3