В 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. Завершение
С этими настройками ваш персонаж должен корректно выполнять анимацию бега с движущимися руками и правильно реагировать на команды удара, как в положении "стоя", так и во время бега. Не забудьте протестировать переходы и временные параметры, чтобы получить желаемый результат.