@yraiv

Почему дёргается камера при движении?

У меня есть несколько объектов, которые двигаются и камера должна подстраиваться под них и быть в середине между ними, но вместо плавного движения - она подёргивается постоянно, как быть?
Пробовал 2 варианта, но ни один не дал результата
public List<Transform> objectsList;
    public float smoothSpeed = 5f;

    private Camera cam;
    private Vector3 center;

    void Start()
    {
        cam = GetComponent<Camera>();

    }


    public void LateUpdate()
    {
        center = GetCenterOfObjects(objectsList);
        Vector3 targetPosition = new Vector3(center.x, center.y, -10);

        if (Vector3.Distance(transform.position, targetPosition) > 0.1f)
        {
            transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smoothSpeed);
        }
    }

    Vector3 GetCenterOfObjects(List<Transform> objects)
    {
        if (objects.Count == 0)
        {
            return Vector3.zero;
        }

        Bounds bounds = new Bounds(objects[0].position, Vector3.zero);

        foreach (Transform obj in objects)
        {
            bounds.Encapsulate(obj.position);
        }

        Vector3 center = bounds.center;

        return center;
    }

И второй
public List<Transform> objectsList;
    public float smoothSpeed = 5f;

    private Camera cam;
    private Vector3 center;

    void Start()
    {
        cam = GetComponent<Camera>();

    }


    public void LateUpdate()
    {
        center = GetCenterOfObjects(objectsList);
        Vector3 targetPosition = new Vector3(center.x, center.y, -10);

        if (Vector3.Distance(transform.position, targetPosition) > 0.1f)
        {
            transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smoothSpeed);
        }
    }

    Vector3 GetCenterOfObjects(List<Transform> objects)
    {
        if (objects.Count == 0)
        {
            return Vector3.zero;
        }

        Vector3 sum = Vector3.zero;

        foreach (Transform obj in objects)
        {
            sum += obj.position;
        }

        Vector3 center = sum / objects.Count;

        return center;
    }

Что я не так делаю?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы