Can you help me make an algorithm out of these parameters?
I'm trying to have an object be a specific size when at point A but another specific size at point B and linearly interpolate between those sizes when moved.
I'm thinking about having the algorithm's return type be a Vector3 so I can just do this: transform.localScale = algorithm;
I know this is more of a math question than anything else but I couldn't find any site featuring a forum for math problems so I just posted here.
Answer by LazyElephant · Mar 26, 2016 at 08:11 AM
To linearly interpolate between two 3d points, you need to calculate the vector difference between your two points. This is easy: V = B-A
Once you know this, you move from A to B as a percentage of the difference vector. For example, the halfway point between A and B would be : H = A + 0.5 V
This can be applied to scale also, since it's represented by a Vector3.
If you want to change the scale based on the distance traveled from A to B, you have to calculate what percentage of the distance has been traveled. You can do this using the Vector3.Distance function.
percentTraveled = Vector3.Distance( A, currentPosition ) / Vector3.Distance( A, B );
Once you know this, just linearly interpolate between the initial scale and final scale using Vector3.Lerp.
scale = Vector3.Lerp( initialScale, finalScale, percentTraveled );
Thanks! I hadn't thought about using the Vector3.Lerp for anything else but interpolating between locations. I did play around with Vector3.Lerp but in my instance it didn't interpolate correctly and just kept expanding ins$$anonymous$$d of keeping its size according to the t in Vector3.Lerp(vector3 A, vector3 B, float t)
so that made me think that the t was the speed of the interpolation, clearly one of my variables in Vector3.Lerp was uncontrollably expanding ins$$anonymous$$d of being constant like it should have.
However, it works now!