在许多2D游戏中,玩家进入BOSS或某个区域后相机会自动缩放或是从跟随玩家的位置平移到一个拍摄整场的不动的位置。
具体实现用到了Cinemachine中的多个虚拟相机相互切换。
方法:
在场景中创立一个空物体,添加Collider2D(或Collider,取决于游戏是2D还是3D)
(大小可自行调整)
添加代码:
using UnityEngine;
using Cinemachine;
public class Boss_CameraManager : MonoBehaviour
{
// public LayerMask TargetLayer = LayerManager.PlayerLayerMask;
public CinemachineVirtualCameraBase MainCamera;//MainCamera
public CinemachineVirtualCameraBase SwitchCam; //Camera
private void OnTriggerEnter2D(Collider2D other) {
if(other.CompareTag("Player")) {
SwitchCamera(MainCamera, SwitchCam);
}
}
private void OnTriggerExit2D(Collider2D other) {
if(other.CompareTag("Player")) {
SwitchCamera(SwitchCam, MainCamera);
}
}
//Switch From Camera_1 to Camera_2
private void SwitchCamera(CinemachineVirtualCameraBase Camera_1, CinemachineVirtualCameraBase Camera_2) {
Camera_1.VirtualCameraGameObject.SetActive(false);
Camera_2.VirtualCameraGameObject.SetActive(true);
}
}
原理:角色进入区域后,将跟随角色的相机SetActive设置为false,将转换到的相机设置为true,Cinemachine会自动帮助我们切换。
Inspector中的设置:
空物体:
原相机:
注意Default Blend的设置,若设置为Cut,相机会直接切换,设置为Ease会平滑切换