44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using System.Collections;
|
|
using Cinemachine;
|
|
using UnityEngine;
|
|
|
|
public class CameraShake : MonoBehaviour
|
|
{
|
|
public static CameraShake instance;
|
|
|
|
void Start()
|
|
{
|
|
if (instance == null)
|
|
instance = this;
|
|
}
|
|
public void ShakeCamera(float intensity, float duration)
|
|
{
|
|
StartCoroutine(DoShake(intensity, duration));
|
|
print("Shaking da booty");
|
|
}
|
|
|
|
private IEnumerator DoShake(float intensity, float duration)
|
|
{
|
|
var cam = CinemachineCore.Instance.GetActiveBrain(0).ActiveVirtualCamera.VirtualCameraGameObject.GetComponent<CinemachineCameraOffset>();
|
|
|
|
CinemachineCameraOffset cinemachineCameraOffset = cam.GetComponent<CinemachineCameraOffset>();
|
|
Vector3 originalOffset = cinemachineCameraOffset.m_Offset;
|
|
float elapsed = 0.0f;
|
|
|
|
while (elapsed < duration)
|
|
{
|
|
float x = Random.Range(-1f, 1f) * intensity;
|
|
float y = Random.Range(-1f, 1f) * intensity;
|
|
|
|
print("x: " + x + "y: " + y);
|
|
|
|
cam.GetComponent<CinemachineCameraOffset>().m_Offset = new Vector3(x, y, originalOffset.z);
|
|
|
|
elapsed += Time.deltaTime;
|
|
yield return null;
|
|
}
|
|
|
|
cam.GetComponent<CinemachineCameraOffset>().m_Offset = originalOffset;
|
|
}
|
|
}
|