- Home /
Upon stopping my animated object, it doesn't return to it's initial position?
My script is set up so I can click on a toggle button object and that starts & stops an animation attached to a sphere. It is working, but when I click the button again the sphere just stops in the middle of it's animation and it doesn't initialize back to the starting point until I start the animation again. What I would like to happen is that the sphere is normally in it's start position, but then after the button is clicked and it animates, I would like to be able to click that button again to have it not only stop but return to it's start position? Hope this is clear enough! I tried using yield(in order to re-initialize the animation then stop it quickly) and a couple other things, but I don't have a good way to fix this. Thank you!
var sphere : GameObject; var switch = false;
function OnMouseDown() {
if (!switch) { sphere.animation.Play ("Doppler");
} else {
sphere.animation.Play ("Doppler"); // As far as I can tell, adding these two lines did nothing. I wanted it two wait
yield WaitForSeconds (0.1); // 0.1 seconds(starting back at the initial position before being stopped)
sphere.animation.Stop("Doppler"); }
switch = !switch;
}
Answer by Sundar · Aug 12, 2012 at 06:00 PM
You can do two things, first Debug.Log( sphere.animation["Doppler"].time );
if it is 0.0, then it has gone back to its start position or you can force it to rewind by calling
sphere.animation.Rewind("Doppler");
or
sphere.animation["Doppler"].time = 0.0f;
Answer by Nobody99 · Aug 12, 2012 at 06:04 PM
Maybe you have to change the animation kind from once to looping
Answer by Apples_mmmmmmmm · Aug 12, 2012 at 05:52 PM
I believe you need to use the Rewind function for animation in order to reset the state of the animation.
var sphere : GameObject; var switch = false;
function OnMouseDown() {
if (!switch) { sphere.animation.Play ("Doppler");
} else {
sphere.animation.Play ("Doppler"); // As far as I can tell, adding these two lines did nothing. I wanted it two wait
yield WaitForSeconds (0.1); // 0.1 seconds(starting back at the initial position before being stopped)
sphere.animation.Stop("Doppler");
animation.Rewind("Doppler"); }
switch = !switch;
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613075532im_/https://answers.unity.com/themes/thub/images/avi.jpg)