Как объединить две анимации в Unity?

Как можно сочетать две анимации в Unity, чтобы персонаж, например, двигал руками при беге, а также выполнял удар одной рукой, при этом чтобы анимация удара работала как во время бега, так и в положении "стоя"?
  • 7 апреля 2025 г. 5:25
Ответы на вопрос 1
В Unity вы можете объединить две анимации с помощью Animator и системы анимации. Для реализации вашей задачи, вам потребуется использовать Animator Controller и параметры, которые будут управлять состояниями анимации. Вот пошаговая инструкция:

### 1. Настройка Animator Controller

1. **Создание Animator Controller**:
   - Создайте новый Animator Controller (правый клик в Project View -> Create -> Animator Controller).
   - Дважды щелкните по созданному контроллеру, чтобы открыть Animator Window.

2. **Добавление анимаций**:
   - Перетащите ваши анимации (например, бег и удар) в Animator Window.
   - Убедитесь, что у вас есть состояния для каждой из анимаций (например, "Run" и "Attack").

### 2. Добавление параметров

1. **Создание параметров**:
   - В Animator Window, в панели "Parameters", создайте два параметра (например, `isRunning` для бега и `isAttacking` для удара). Используйте булевы параметры (bool), чтобы управлять состоянием.

### 3. Настройка переходов

1. **Настройка переходов**:
   - Создайте переходы между состояниями:
     - Переход от "Idle" в "Run" на основе `isRunning`.
     - Переход от "Run" в "Idle" на основе `!isRunning`.
     - Переход от "Run" в "Attack" на основе `isAttacking`.
     - Переход от "Attack" обратно в "Run" по окончании анимации удара.

2. **Настройки переходов**:
   - Убедитесь, что для переходов между "Run" и "Attack" у вас есть заданные условия. Обычно стоит отключить "Has Exit Time" для более быстрого перехода между анимациями.

### 4. Сценарий управления анимациями

1. **Создание скрипта**:
   - Создайте новый скрипт (например, `PlayerController`) и привяжите его к вашему игровому объекту (персонажу).
   - Внутри скрипта получите доступ к `Animator` и управляйте параметрами.

```csharp
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        float move = Input.GetAxis("Vertical");
        float strafe = Input.GetAxis("Horizontal");

        // Проверяем движение
        animator.SetBool("isRunning", move != 0 || strafe != 0);
        
        // Проверка удара
        if (Input.GetButtonDown("Fire1")) // Предполагается, что "Fire1" соответствует кнопке удара
        {
            animator.SetTrigger("isAttacking");
        }
    }
}
```

### 5. Завершение

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