相機抖動效果。
using UnityEngine;
using System.Collections;
namespace ElementGirl.shiweijie
{
public class CameraShake : MonoSingleton<CameraShake>
{
// 抖動目標的transform(若未添加引用,怎默認爲當前物體的transform)
public Transform camTransform;
[Tooltip("持續抖動的時長")]
public float shake = 0f;
// 抖動幅度(振幅)
//振幅越大抖動越厲害
public float shakeAmount = 0.7f;
public float decreaseFactor = 1.0f;
[Tooltip("是否抖動")]
public bool isShake = false;
private float oldShake;
Vector3 originalPos;
void Awake()
{
oldShake = shake;
if (camTransform == null)
{
camTransform = GetComponent(typeof(Transform)) as Transform;
}
}
void OnEnable()
{
originalPos = camTransform.localPosition;
}
void Update()
{
if (isShake == true)
{
if (shake > 0)
{
camTransform.localPosition = originalPos + Random.insideUnitSphere * shakeAmount;
shake -= Time.deltaTime * decreaseFactor;
}
else
{
shake = 0f;
camTransform.localPosition = originalPos;
isShake = false;
}
}
if (isShake == false)
{
shake = oldShake;
}
}
}
}