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(); 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) ); } }