If statement not getting called after Lerping a Scale
I have this script where my object grows in scale and then shrinks back down when it reaches the maxScale, but when maxScale and his X Scale are the same.. it doesn't switch to the other ... I tried printing the values to see if they ever became the same and they eventually did, so why doesn't the If statement ever get called ?
public class knockBack : MonoBehaviour
{
public bool growing;
public float maxScale;
private float minScale;
public float speed;
// Use this for initialization
void Start()
{
minScale = transform.localScale.x;
growing = true;
}
void FixedUpdate()
{
Manager.Enemy.Knockback = true;
if (growing)
{
transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(maxScale, maxScale, 0.1f), speed);
print(maxScale + "," + transform.localScale.x);
if (maxScale <= transform.localScale.x)
{
growing = false;
print("should stop growing!!");
}
}
else
{
if (minScale < transform.localScale.x)
{
transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(minScale, minScale, 0.1f), speed);
}
}
}
}
Have you tried printing out print(maxScale == transform.localScale.x);
to see if they ACTUALLY become the same ? Numbers that you log out can always get formatted in several ways and might look the same in console but still have a fraction of difference.
If you read what Lerp actually does, you'll see that condition should not become true unless speed
is 1 at some point (or after a long while when the values get so close to eachother that floating point accuracy fails to make a difference between them):
I mean.. if an object always travels 99% of the distance to a target location, it doesn't matter how many times it does so, mathematically it will never reach the target location. It will always be 1% of previous distance away from the target.
Answer by The-Evster · Aug 31, 2016 at 01:15 PM
The if statement is only called if growing = true and on the 29th line it is set to false and no where in the rest of the script is it being reset to true.
hope this was helpful
growing never gets to false because that part of the code doesn't read, wich is what I want.
Your answer
Follow this Question
Related Questions
Saving default scale of an object c# 1 Answer
Coroutine: delay transform rotation but start transform movement immediately 2 Answers
Object moving chaotically using lerp and repeating. 1 Answer
Scaling a text to fill 50% of screen width and 50% of height, no matter whats inside C# 0 Answers
why did the script change 0 Answers