Если персонаж в Unity должен **ходить, прыгать, атаковать и плавно переключаться между действиями**, основа почти всегда одна — **Animator + State Machine**. Это стандартный и самый удобный способ управлять анимациями без хаоса в коде.
Что такое Animator в Unity
Animator — это компонент, который воспроизводит анимации через **Animator Controller**. Внутри контроллера вы настраиваете:
- состояния анимаций: `Idle`, `Walk`, `Run`, `Jump`
- переходы между ними
- параметры, которые запускают смену состояний
Что такое State Machine
State Machine — это логика, где объект всегда находится в одном из состояний.
Пример для персонажа:
- `Idle` — стоит
- `Walk` — идет
- `Jump` — прыгает
- `Attack` — атакует
Переход между ними зависит от условий: скорости, нажатия кнопки, нахождения на земле.
Как настроить Animator пошагово ⚙️
1. Подготовьте анимации
Импортируйте клипы или создайте свои:
- Idle
- Walk
- Jump
2. Создайте Animator Controller
В Project:
`Create → Animator Controller`
Назначьте его объекту с компонентом Animator.
3. Откройте окно Animator
Перетащите клипы в граф. Каждый клип станет отдельным state.
4. Добавьте параметры
Во вкладке Parameters создайте:
- `Speed` — Float
- `IsGrounded` — Bool
- `Jump` — Trigger
5. Настройте переходы
Примеры:
- `Idle → Walk`, если `Speed > 0.1`
- `Walk → Idle`, если `Speed < 0.1`
- `Any State → Jump`, если сработал `Jump`
- `Jump → Idle`, если `IsGrounded = true`
Как управлять анимациями из кода 💻
using UnityEngine;
public class PlayerAnim : MonoBehaviour
{
private Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
float speed = Mathf.Abs(Input.GetAxis("Horizontal"));
anim.SetFloat("Speed", speed);
if (Input.GetKeyDown(KeyCode.Space))
{
anim.SetTrigger("Jump");
}
}
}
Этот код:
- передает скорость в Animator
- запускает прыжок по кнопке Space
Что важно знать новичку
- Has Exit Time — если включен, анимация чаще ждет завершения перед переходом
- Transition Duration — отвечает за плавность переключения
- Any State — удобно для удара, урона, прыжка, но не злоупотребляйте
- для сложной логики используйте Blend Tree — например, для плавного перехода между ходьбой и бегом
Частые ошибки 🚫
- названия параметров в коде не совпадают с Animator
- переходы зациклены и конфликтуют
- забыли снять `Has Exit Time`, когда нужен мгновенный переход
- анимация есть, но объекту не назначен Animator Controller
Итог
Animator и State Machine в Unity позволяют строить понятную, масштабируемую систему анимаций. Для большинства задач достаточно связки:
- states
- parameters
- transitions
- управление через `Animator.SetFloat/SetBool/SetTrigger`
Это база, без которой сложно делать качественные персонажи, врагов и интерактивные объекты в Unity 🚀
📌 Ниже стоит посмотреть подборку каналов про IT — там много полезного по Unity, разработке игр и программированию.