- Home /
Remove delay between lerps
I made a simple script that goes to one waypoint and then to the next.
My problem is that it seems to be a delay while going from waypoint1 to waypoint2 and i don't know why:
¿Why is that delay happening and how can i remove it?
using UnityEngine;
using System.Collections;
public class Missile : MonoBehaviour
{
public Vector3 finalTarget;
public Transform forwardObject;
public GameObject impactAreaPrefab;
float smoothingDelay = 0.1f;
bool fired = false;
bool powerPhase = true;
Vector3 currentTarget;
private void OnEnable() {
fire(new Vector3(-25.29f, 0.5f, -10.638f));
}
void fire(Vector3 coords) {
currentTarget = forwardObject.position;
finalTarget = coords;
Instantiate(impactAreaPrefab, finalTarget, Quaternion.identity);
fired = true;
}
void Update() {
if (!fired) {
return;
}
if (powerPhase && transform.position == currentTarget) {
powerPhase = false;
currentTarget = finalTarget;
smoothingDelay = 0.05f;
}
transform.position = Vector3.Lerp(transform.position, currentTarget, Time.deltaTime / smoothingDelay);
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(Vector3.RotateTowards(transform.forward, currentTarget, 1, 0.0f)), Time.deltaTime / smoothingDelay);
}
}
Answer by ray2yar · Dec 27, 2018 at 03:12 AM
I think your delay is the fact that you're lerping between the object's current position and the target. For ease let's assume that the time.deltatime remains relatively constant.... say it amounts to 0.1 (or 10%). As your object gets closer to the target the lerp is going through smaller values.... For example, if it started at a magnitude of 100 units away the first time through it'd lerp 10 units to 90... then the next time 9 units to 81... and then it'd move 8.1 units.... and so on. This effect won't be very noticeable until you get closer to the target as now you'd be taking 10% of a really really small number. On top of that, I used 0.1 but your time.deltatime will in fact be magnitudes smaller. Hopefully you see the problem here. Try lerping between the object's original position and the final position.
Your answer

Follow this Question
Related Questions
Collision.contacts? 1 Answer
Stop a Lerp from looping 3 Answers
How to Gradually Increase Speed with Lerp or Slerp? 1 Answer
Vector3.Lerp - Constant speed between distance changes 3 Answers
Now I'm over Inflated! 1 Answer