using UnityEngine; namespace Code.Gameplay.Camera { public class CameraFollow : MonoBehaviour { [SerializeField] private Transform _target; [SerializeField] private Vector2 _offset = Vector2.zero; [SerializeField] private float _smoothSpeed = 0.125f; [SerializeField] private bool _useHorizontalBounds = true; [SerializeField] private float _minX = -10f; [SerializeField] private float _maxX = 10f; [SerializeField] private bool _useVerticalBounds = false; [SerializeField] private float _minY = -5f; [SerializeField] private float _maxY = 5f; private Vector3 _desiredPosition; private void LateUpdate() { if (!_target) return; _desiredPosition = _target.position + (Vector3)_offset; _desiredPosition.z = -10; if (_useHorizontalBounds) _desiredPosition.x = Mathf.Clamp(_desiredPosition.x, _minX, _maxX); if (_useVerticalBounds) _desiredPosition.y = Mathf.Clamp(_desiredPosition.y, _minY, _maxY); transform.position = Vector3.Lerp(transform.position, _desiredPosition, _smoothSpeed); } } }