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

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