使用DG.Tweening,调用transform的DoShakePosition方法
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControl : MonoBehaviour
{
private static CameraControl instance = null;
private CameraControl() { }
public static CameraControl GetInstance()
{
return instance;
}
private void Awake()
{
if (instance != null) Destroy(instance);
instance = this;
_camera = Camera.main;
}
private Camera _camera;
/// <summary>
/// 持续时间
/// </summary>
private float _shakeTime;
/// <summary>
/// 抖动幅度
/// </summary>
[SerializeField]
private float _am = 0.3f;
/// <summary>
/// 抖动强度
/// </summary>
[SerializeField]
private int _hz = 30;
/// <summary>
/// 震动
/// </summary>
public void Shake(float time = 1)
{
if (_shakeTime > 0) return;//防止多次调用
_shakeTime = time;
_camera.transform.DOShakePosition(_shakeTime, _am, _hz).OnComplete(()=> { _shakeTime = 0; _camera.transform.localPosition = Vector3.zero; });
}
}