Сильные подергивания камеры, при следовании за объектом, Unity

Недавно начала изучать Unity, и начала смотреть различные туториалы, гайды, и т.д. И вот возникла проблема, которая нигде, ни в каких туториалах не рассматривается. Есть 3д игра, в ней за игроком должна следовать камера, игрок едет только по прямой. и вот у камеры постоянные подергивания, и нет плавного следования. Вот скрипт, по которому камера следует игроку.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowPlayer : MonoBehaviour
{
    public GameObject player;
    // Start is called before the first frame update
    Vector3 dif;
    void Start()
    {
        dif = transform.position - player.transform.position;
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = player.transform.position + dif;
    }
}

Можете пожалуйста объяснить как это исправить. Если что (вдруг это нужно), движение игрока реализовано не с помощью сил, а с помощью простого изменения его координат в пространстве (transform.Translate)


Ответы (1 шт):

Автор решения: Psyxoz0x13

Задача решаема с помощью линейной интерполяции

transform.position = Vector3.Lerp(
    transform.position,
    _target.position + _offset,
    _speed * Time.deltaTime);

Где _target ссылка на Transform следуемого объекта

_offset это задаваемый Vector, определяющий смещение от точки наблюдения

_speed скорость преследования

В интернете достаточно уроков по этому поводу, на любом желаемом языке, даже есть официальный урок от Unity, где используются более сложные но уже готовые решения https://www.youtube.com/watch?v=537B1kJp9YQ.

Советую изучать готовый инструментарий, а не городить сотню велосипедов, что убьет стремление к разработке, много времени и сил. И поменьше смотреть блогеров, которые едва ли знают какие практики применяются, их возможности это создать передвижение для шарика и камеру привязать нагородив 3 тысячи велосипедов. Удачи в пути!

→ Ссылка