1
\$\begingroup\$

I'm trying to slow down a object over different distances in the same time, say 3 seconds.

My slow down code is.

function lerpSpeed (speed: float, lerpSpeedTime: float) { incomingFlightSpeed = flightPathScript.flightSpeed; i = 0; while(i < 1) { i += Time.deltaTime/lerpSpeedTime; i = Mathf.Clamp(i, 0, 1); flightPathScript.flightSpeed = Mathf.Lerp(incomingFlightSpeed, speed, i); yield; } }

So I call it with.

 waypointScript.lerpSpeed(1,(totaFlighpointsDistance/flightSpeed));

In the picture below I've draw a bezier curve and at the last 8 flight points (the red and yellow spheres) I want to start the slow down from the yellow sphere to the last red sphere.

I get the distance in between each of the last 8 flight points and total them up to give me the total distance, I understand to get the time it will take to travel that distance is time = total distance/speed, but as I'm slowing the speed in my function above this will not work.

And because every bezier curve I generate is different, some stretched out, with total distances sometimes ranging from 30 to 8.

So I'm a bit stuck here, thought I'd get this one, but unless I'm missing something simple I can't get my head around it, so any help would be greatly appreciated, thanks.

enter image description here

\$\endgroup\$

1 Answer 1

0
\$\begingroup\$

I've attached a few sample calculations below. The first two are linear burn downs, which isn't quite what you want, but it's good to see the math. Basically, each time you multiply the current speed by a reducing fraction that is a function of the number of stops you have. The last frame is always to Lerp to 0. All examples have two calculations, one from a starting speed of 30, one from a starting speed of 78.

Linear Speed 30 26.25 22.5 18.75 15 11.25 7.5 3.75 0 Delta -3.75 -3.75 -3.75 -3.75 -3.75 -3.75 -3.75 -3.75 Math 7/8 6/7 5/6 4/5 3/4 2/3 1/2 zero out Speed 78 69.3 60.6 52 43.3 34.6 26 17.3 8.6 0 Delta -8.7 -8.7 -8.6 -8.7 -8.7 -8.6 -8.7 -8.7 -8.6 Math 8/9 7/8 6/7 5/6 4/5 3/4 2/3 1/2 zero out 

These sets are burn downs over time, each giving you the speed to Lerp to by the next point. The first is a four-second burn down, the second is a three-second burn down.

Multipled by 3/x (4 second burn down) Speed 30 11.25 4.21 1.58 0 Delta -18.75 -7.04 -2.63 -1.58 Math 3/8 3/8 3/8 zero out Speed 78 26 8.6 2.8 0 Delta -52 -17.4 -5.8 -2.8 Math 3/9 3/9 3/9 zero out Multipled by 2/x (3 second burn down) Speed 30 7.5 1.875 0 Delta -22.5 -5.625 -1.875 Math 2/8 2/8 zero out Speed 78 17.33 3.85 0 Delta -60.67 -13.48 -3.85 Math 2/9 2/9 zero out 
\$\endgroup\$
0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.