36 lines
1.6 KiB
C#
36 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
// Замена для CameraFollow3D.
|
|
// Камера НЕ вращается и НЕ наклоняется — только плавно следует за игроком.
|
|
// Это критично для изометрии: "объём" уже нарисован в спрайтах,
|
|
// камера должна смотреть на сцену строго прямо, без LookAt и без наклона.
|
|
public class CameraFollowIso : MonoBehaviour
|
|
{
|
|
public Transform player;
|
|
|
|
// Смещение камеры от игрока. Z должен оставаться отрицательным
|
|
// (камера "позади" сцены по оси Z), X и Y обычно 0, если камера
|
|
// должна быть строго над игроком.
|
|
public Vector3 offset = new Vector3(0, 0, -10);
|
|
|
|
// Чем меньше — тем плавнее (и тем сильнее лаг за игроком).
|
|
// 5-10 обычно комфортно и без резких рывков.
|
|
public float smoothSpeed = 8f;
|
|
|
|
void Awake()
|
|
{
|
|
// Жёстко фиксируем поворот камеры один раз.
|
|
// Никакого LookAt в Update/LateUpdate быть не должно.
|
|
transform.rotation = Quaternion.identity;
|
|
}
|
|
|
|
void LateUpdate()
|
|
{
|
|
if (player == null) return;
|
|
|
|
Vector3 targetPos = player.position + offset;
|
|
|
|
// Плавное движение ТОЛЬКО позиции, поворот не трогаем вообще.
|
|
transform.position = Vector3.Lerp(transform.position, targetPos, smoothSpeed * Time.deltaTime);
|
|
}
|
|
} |