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