Files

37 lines
1.2 KiB
C#

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