using UnityEngine;
public class CameraFollow : MonoBehaviour
{
[Header("Настройки камеры")]
[SerializeField] private Transform target; // Игрок
[SerializeField] private Vector3 offset = new Vector3(0, 12, -6); // Смещение (высота и отдаление)
[SerializeField] private float smoothSpeed = 5f; // Плавность движения
// Угол, под которым камера смотрит вниз (как в твоей Main Camera rotation: 40, 0, 0)
// Важно: 40 градусов считается от горизонтали вверх. В Unity это -40 или 40 в зависимости от оси.
// Я ставлю -35, так как в изометрии обычно используют именно это значение. Подгони под свой вкус.
private Vector3 fixedRotation = new Vector3(40, 0, 0);
void Start()
{
// Принудительно ставим нужный поворот при старте
transform.eulerAngles = fixedRotation;
}
void LateUpdate()
{
if (target == null) return;
// 1. Вычисляем желаемую позицию (позиция игрока + наш offset)
Vector3 desiredPosition = target.position + offset;
// 2. Плавно перемещаем камеру в желаемую позицию
transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime);
// 3. Жестко фиксируем поворот камеры.
// Мы НЕ используем LookRotation, чтобы камера всегда смотрела строго под 40 градусов вниз.
transform.eulerAngles = fixedRotation;
}
}