1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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;
- }
- }
|