using UnityEngine; public class CameraFollow : MonoBehaviour { [Header("Цель и Смещение")] [Tooltip("Объект, за которым следует камера (ваш шарик).")] [SerializeField] private Transform target; [Tooltip("Смещение камеры относительно шарика (например, 0, 5, -8).")] [SerializeField] private Vector3 offset = new Vector3(0f, 5f, -8f); [Header("Настройки Сглаживания")] [Tooltip("Скорость, с которой камера догоняет цель. Меньше = плавнее.")] [SerializeField] private float smoothSpeed = 5f; // Используем LateUpdate, чтобы камера двигалась после того, как шарик закончит свое движение void LateUpdate() { if (target == null) { Debug.LogWarning("CameraFollow: Цель (Target) не установлена. Назначьте объект шарика!"); return; } // 1. Определяем желаемую позицию камеры Vector3 desiredPosition = target.position + offset; // 2. Используем Lerp для плавного перемещения текущей позиции к желаемой // Vector3.Lerp(a, b, t) интерполирует между 'a' и 'b' на величину 't'. // Мы умножаем smoothSpeed на Time.deltaTime для обеспечения независимости от частоты кадров. Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime); // 3. Применяем сглаженную позицию transform.position = smoothedPosition; // 4. Опционально: поворачиваем камеру, чтобы она всегда смотрела на шарик transform.LookAt(target); } }