前提:在场景中创建虚拟相机
创建之后MainCamera上会自动挂载上CinemachineBrain组件。
步骤一:在创建的虚拟相机上挂载Cinemachine Impulse Listener:用来监听代码中震动的信号(通过虚拟相机上的Add Extension—>select添加)
步骤二:在震动发生的物体上添加Cinemachine Collision Impulse Source脚本,震动源上必须有Collider组件(直接Add Component出搜索即可),在我的场景中震动源即是Player,当Player被攻击的时候相机发生抖动。
将Impulse Type设置为Legacy,并自己配置Noise Settings。
这个配置简单来说就是相机按照什么方式来进行抖动,如下图所示。
在本次场景中,只是简单设置相机进行Y方向上的抖动(可自行调整设置相关参数)。
步骤三:在脚本中调用震动方法(挂载在Player身上)
using UnityEngine;
public class CinemaShake : MonoBehaviour
{
private CinemachineImpulseSource myImpulse;
private void Start()
{
myImpulse = GetComponent<CinemachineImpulseSource>();
}
#region 外部调用(例如当Player受击时候,调用此方法)
/// <summary>
/// 摄像机抖动
/// </summary>
public void CameraShake()
{
if (myImpulse != null)
{
myImpulse.GenerateImpulse();
}
}
#endregion
}