37 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |