Right now I am using this code in the Main Camera which follows the Player.
using UnityEngine;
using System.Collections;
public class CameraShake : MonoBehaviour {
public float duration = 0.5f;
public float speedBump = 1.0f;
public float magnitude = 0.1f;
void Update(){
if(Input.GetButtonDown("Fire2")){
StartCoroutine(Shake());
}
}
IEnumerator Shake() {
float elapsed = 0.0f;
Vector3 originalCamPos = Camera.main.transform.position;
while (elapsed < duration) {
elapsed += Time.deltaTime;
float percentComplete = elapsed / duration;
float damper = 1.0f - Mathf.Clamp(4.0f * percentComplete - 3.0f, 0.0f, 1.0f);
// map value to [-1, 1]
var x = Random.value * 2.0f - 1.0f;
var y = Random.value * 2.0f - 1.0f;
x *= magnitude * damper * originalCamPos.x;
y *= magnitude * damper * originalCamPos.y;
Camera.main.transform.position = new Vector3(x, y, originalCamPos.z);
yield return null;
}
}
}
Although it does shake when I hit “Fire2”, it reverts the the original camera position, then shakes, and only returns following the Player when it is finished shaking. I have tired playing around with this code but haven’t gotten any success with it. Thanks!