- Home /
Decreasing object size until a certain size over time?
I want to decrease the size of an object in the y-axis slowly over time and until a certain scale. How can I do it? Thank you.
Answer by Zwithak · Jan 25, 2018 at 05:11 AM
You should be able to set the local scale of the gameobject directly. So, a coroutine would do nicely do perform the task every frame, where it increasingly lowers the local scale.
E.g., something like this would work:
IEnumerator shrinkObject(GameObject g, float scaleRate, float minScale)
{
float scale_y = g.transform.localScale.y;
while(scale_y > minScale) // while the object is larger than desired
{
scale_y -= scaleRate * Time.deltaTime; // calculate the new scale relative to the rate
Vector3 scale = g.transform.localScale;
scale.y = scale_y;
g.transform.localScale = scale;
yield return null; // wait a frame
}
yield break;
}
Answer by shinevision · Jan 24, 2018 at 11:50 PM
public GameObject objectToScale;
public float scaleSpeed;
public float minSize;
void Update()
{
if(objectToScale.transform.localScale.y <= minSize)
{
objectToScale.transform.localScale = new Vector3(objectToScale.transform.localScale.x,objectToScale.transform.localScale.y + Time.deltaTime * scaleSpeed,objectToScale.transform.localScale.z)
}
}
You will have to do something close to that ^ some things might have to be changed (for example, if its a 2D game, it would use Vector2) Sorry for the short answer, have to go in a few mins. hope this helps you! Goodluck!
Your answer
Follow this Question
Related Questions
How Increase And Decrease And Reset Spawn Rate Over 0 Answers
TimeSpan why are you being difficult? 2 Answers
How increase and decrease and reset spawn rate over time? 1 Answer
how to decrease repeating time in invokerepeating? 2 Answers
Animation Window: How to scale keyframes to increase time? 9 Answers