Hallo everybody,
I stumbled against a weird (in my eyes) problem while using Vector3.Lerp. If i place the lerp function inside an if statement which should control when the lerp should actually take place and when the object should stop, it does not behave like i want it to.
function Update ()
{
calculateDistance();
if (canMove)
{
startMoving();
}
}
function moveLetters(thisTransform : Transform, startPos : Vector3, endPos : Vector3, time : float)
{
var i = 0.0;
var rate = 1.0/time;
while(i <1.0)
{
i += Time.deltaTime * rate;
thisTransform.position = Vector3.Lerp(startPos, endPos, i);
yield;
}
}
function calculateDistance()
{
if(clonedLetter_1 != null)
{
distance_1 = Vector3.Distance(clonedLetter_1.transform.position,player.transform.position);
distance = distance_1;
if(distance < 5)
{
canMove = true;
} else if (distance > 5)
{
canMove = false;
}
print(distance);
}
}
function startMoving()
{
if(clonedLetter_1 != null)
{
moveLetters(clonedLetter_1.transform,clonedLetter_1.transform.position,target_1.transform.position,30.0);
clonedLetter_1.transform.position.y = target_1.transform.position.y;
}
if(clonedLetter_2 != null)
{
moveLetters(clonedLetter_2.transform,clonedLetter_2.transform.position,target_2.transform.position,30.0);
clonedLetter_2.transform.position.y = target_2.transform.position.y;
}
if(clonedLetter_3 != null)
{
moveLetters(clonedLetter_3.transform,clonedLetter_3.transform.position,target_3.transform.position,30.0);
clonedLetter_3.transform.position.y = target_3.transform.position.y;
}
}
The problematic if statement:
if(distance < 5)
{
canMove = true;
} else if (distance > 5)
{
canMove = false;
}
I printed the results and canMove switches correctly between true and false. Distance also works correctly. The problem is, once the lerp is turned on, it wont stop, even though i have an if statement which should stop it each time the distance is bigger than 5. My question is if lerp is “update” independent (if such a thing exists) or if there is another to stop a Lerp movement.
I am fairly new to scripting so i bid my excuses if this is something obvious which i cant see to unravel.
Anyways, thanks in advance.
Hatzalex