hellbound/Assets/Scripts/Managers/Camera/CameraTargetFollower.cs

48 lines
1.2 KiB
C#

using UnityEngine;
public class CameraTargetFollower : MonoBehaviour
{
private Transform _targetTransform;
private bool _isFollow;
public Transform GetTarget() => _targetTransform;
public static CameraTargetFollower CreateTarget()
{
var target = new GameObject("TargetFollow");
var follower = target.AddComponent<CameraTargetFollower>();
return follower;
}
public void SetTarget(Transform target, bool instantTransition = false)
{
_targetTransform = target;
if(instantTransition)
transform.SetPositionAndRotation(
target.transform.position,
Quaternion.LookRotation(target.forward)
);
_isFollow = true;
}
private void FixedUpdate()
{
if (_targetTransform == null || !_isFollow)
return;
UpdateTargetPosition();
}
private void UpdateTargetPosition()
{
transform.SetPositionAndRotation(
Vector3.MoveTowards(transform.position, _targetTransform.position, Time.fixedDeltaTime * 30f),
Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(_targetTransform.forward),
Time.fixedDeltaTime * 30f)
);
}
}