ReplayPuzzleGame/Assets/Resources/Scripts/Utility/CameraEffect.cs

77 lines
1.9 KiB
C#

using System;
using System.Collections;
using UnityEngine;
public class CameraEffect : MonoBehaviour
{
private Transform target;
// 카메라 따라가는 속도 조절
[SerializeField] float smoothTime = 0.3f;
// 아래키로 화면 내릴 수 있는 수치
[SerializeField] private float lookDownAmount = 4f;
// 오프셋
[SerializeField] private Vector3 offset = new Vector3(0, 0, -10f);
private float defaultYOffset;
private Vector3 _velocity = Vector3.zero;
private void Start()
{
defaultYOffset = offset.y;
target = GameObject.FindGameObjectWithTag("Player").transform;
}
private void LateUpdate()
{
if (target == null)
{
return;
}
Vector3 targetPosition = target.position + offset;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref _velocity, smoothTime);
}
public void SetTarget(Transform target)
{
this.target = target;
}
// 아래보는 키 눌렀을때 왔다 갔다
public void SetLookDown(bool isLookingDown)
{
if (isLookingDown)
{
offset.y = defaultYOffset - lookDownAmount;
}
else
{
offset.y = defaultYOffset;
}
}
public void PlayPreViewSequence(Action onComplete)
{
StartCoroutine(PreviewSequence(onComplete));
}
public IEnumerator PreviewSequence(Action onComplete)
{
Transform player = GameObject.FindGameObjectWithTag("Player").transform;
target = player;
yield return new WaitForSeconds(2f);
GameObject cheese = GameObject.FindGameObjectWithTag("Cheese");
if (cheese != null)
{
target = cheese.transform;
yield return new WaitForSeconds(2f);
}
target = player;
yield return new WaitForSeconds(1f);
onComplete?.Invoke();
}
}