using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFollow : MonoBehaviour { public Transform playerPos; public float smooth = 8; private Vector3 offsetPos; private Vector3 originPos; private Quaternion originRot; public float shake_decay; public float shake_intensity; // Use this for initialization void Start() { offsetPos = transform.position - playerPos.position; } // Update is called once per frame void Update() { if (playerPos != null) { Vector3 camNewPos = playerPos.position + offsetPos; transform.position = Vector3.Lerp(transform.position, camNewPos, Time.deltaTime * smooth); } if (shake_intensity > 0) { transform.position = originPos + Random.insideUnitSphere * shake_intensity; transform.rotation = new Quaternion( originRot.x + Random.Range(-shake_intensity, shake_intensity) * 0.2f, originRot.y + Random.Range(-shake_intensity, shake_intensity) * 0.2f, originRot.z + Random.Range(-shake_intensity, shake_intensity) * 0.2f, originRot.w + Random.Range(-shake_intensity, shake_intensity) * 0.2f); shake_intensity -= shake_decay; } } public void Shake() { originPos = transform.position; originRot = transform.rotation; shake_intensity = 0.08f; shake_decay = 0.002f; } }