Unity_lab3/Unity3_lab/Assets/Scripts/CameraFollow.cs
2025-11-11 23:10:37 +03:00

39 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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