在 Unity 游戏开发中,脚本将成为触发摄像机交换的主要方法。下面的内容咋们一起来聊一聊如何使用 C# 与 Cinemachine 进行交互。

首先,需要向 C# 脚本添加一个新库。
using System.collections;
using System.collections-Generic;
using UnityEngine;
using Cinemachine; // 添加Cinemachine
现在需要获取对相机的引用,最简单的方法是使用数组。
[serializeField]
private Gameobject[] _cameras;
在 Unity 中重新编译并返回,可以将相机拖到阵列中。

现在可以在脚本中引用这个相机。
例如当我按下 F 键时,第一个摄像机将关闭(禁用),Cinemachine 将自动移动到下一个可用的摄像机。
如下:
void Update()
{
if (Input.GetKeyDown(KeyCode.F) && _cameras[0].activeInHierarchy)
{
_cameras[0].setActive(false);
}

摄像机优先级决定了 Cinemachine 下一步将使用哪个摄像机。但是,一次只激活需要的虚拟摄像机也是一种很好的做法。
这里还可以使用脚本引用 Cinemachine 摄像机控制窗口内的任何内容,此时需要对活动摄像机的引用:
private Cinemachinelirtualcamera _cam;
// 在第一个帧更新之前开始调用
Unity Message | 0 references
void start()
{
_cam = Getcomponent<Cinemachinevirtualcamera>();
}
在更新中,添加了以下行,将 FoV 设置为 40,默认值为 60。
if (Input.GetKeyDown(Keycode.Space))
{
_cam.GetComponent<CinemachineVirtualCamera>().m_Lens.Fieldofview = 40;
}
}

其实可以在脚本中访问每个摄像机的 CinemachineVirtualCamera 组件中的任何属性,包括转场、观看位置、跟随内容、目标、噪声和转场。
对于大多数设置,建议花一些时间尝试一下,看看每个设置的作用以及如何使用这些属性来改进自己的相机。