Cinemachine相机间的切换

在Cinemachine中,如果两个相机的priority值是一样的,一个相机启用,另外一个相机是禁用的,如果把禁用的相机再启用,Cinemachine Brain的Live Camera会切换到这个相机,这样就可以实现相机的切换。可以通过触发器代码来切换相机。

首先在空物体是上挂一个脚本,控制首先Live Camera选择的是哪个相机。

ActiveCamOnPlay.cs

using UnityEngine;

namespace Cinemachine.Examples
{

[AddComponentMenu("")] // Don't display in add component menu
public class ActivateCamOnPlay : MonoBehaviour
{
    public CinemachineVirtualCameraBase vcam;

	// Use this for initialization
	void Start () 
    {
	    if (vcam)
	    {
	        vcam.MoveToTopOfPrioritySubqueue();
	    }
	}
}

}
,如图,把首先要启用的虚拟相机赋值给Vcam

切换的Trriger脚本。

using UnityEngine;

namespace Cinemachine.Examples
{

[AddComponentMenu("")] // Don't display in add component menu
public class ActivateObject : MonoBehaviour
{
    public GameObject cartToMove;//PathObject,这是一个Dolly Track
    public CinemachineVirtualCameraBase switchToCam; //Camera
    public CinemachinePathBase.PositionUnits positionUnits = CinemachinePathBase.PositionUnits.Distance;
    public float speed = 5f;

    private CinemachineDollyCart dCartComp;
    void Start()
    {
        if (cartToMove)
        {
            dCartComp = cartToMove.GetComponent<CinemachineDollyCart>();//获取CinemachineDollyCart,并令其速度为0,并不运行
            dCartComp.m_Speed = 0f;    
        }
        
    }

    void OnTriggerEnter(Collider col)
    {
        if (col.CompareTag("Player") && switchToCam && cartToMove)
        {
            if (Camera.main.GetComponent<CinemachineBrain>().ActiveVirtualCamera.Name != switchToCam.Name)
            {
                dCartComp.m_PositionUnits = positionUnits;
                dCartComp.m_Speed = speed;

                switchToCam.VirtualCameraGameObject.SetActive(false); //先禁用再启用,得到切换效果
                switchToCam.VirtualCameraGameObject.SetActive(true);        
            }
        }
    }

    void OnTriggerExit(Collider col)
    {
        if (col.CompareTag("Player") && switchToCam != null && cartToMove)
        {
            dCartComp.m_Speed = 0f;
            switchToCam.VirtualCameraGameObject.SetActive(false);
        }
    }
}

}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值