Несколько статей назад я рассказывал о камере, управляемой состоянием, и о том, как я реализовал камеру в своем проекте Unity. Камеры, управляемые состоянием, работают с быстрым повторным захватом, назначая виртуальные камеры в качестве дочерних элементов для камеры, управляемой состоянием. Затем вы назначаете каждому анимированному состоянию свою камеру, которая будет активна всякий раз, когда состояние активно. В сегодняшней статье мы углубимся в конкретное анимированное состояние (прицеливание) и то, как я настроил камеру, чтобы оно соответствовало этому состоянию.

У меня есть анимированное состояние и скрипт, который активирует переход (bool) всякий раз, когда игрок щелкает правой кнопкой мыши.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Aiming : MonoBehaviour
{
private Animator _animator;
private bool _hasAnimatior;
void Start()
{
_hasAnimatior = TryGetComponent(out _animator);
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(1))
{
if (_hasAnimatior)
{
_animator.SetBool("Shooting", true);
}
}
else _animator.SetBool("Shooting", false);
}
}

Теперь для камеры, управляемой состоянием, у меня есть виртуальная камера, назначенная анимированному состоянию. Это камера от третьего лица, с другим FOV и немного ближе к игроку. Всякий раз, когда прицеливается из любого другого состояния, он плавно переходит в вид через плечо.

Это различные состояния и виртуальные камеры, за которые отвечает управляемая состоянием камера. Поэтому всякий раз, когда я нажимаю правую кнопку мыши, у меня теперь вид через плечо.
