Pause Animation.CrossFade
Hi there,
I'm using the animation.CrossFade function to fade from one animation to another and it works fine. However in my application, I want the animation to be paused whenever I hit the pause key.
To do that I set the animation["MyAnimation"].speed = 0;
When any animation is running and I hit pause, it works fine, but if I hit pause while the application is crossfading an animation it doesn't stop.
Can you please share some ideas?
Answer by Craftnime · Aug 26, 2015 at 09:46 AM
Not entirely sure if this works, but you could use a coroutine directed to a function in which the Animation.CrossFade function is in. Like:
function Start () {
StartCoroutine("Blah");
while (Input.GetKeyDown != "p") {yield;}
yield StopCoroutine("Blah");
}
function Blah () {
//The stuff, like that crossfade
}
In which the key "p" is the key to stop the coroutine.
Answer by Jay_Pauly · Aug 26, 2015 at 11:08 AM
Unfortunately it doesn't work, because by default when I pause the application the "Execute" method is not runned. Therefore, your solution is already implemented and still it doesn't work. :(
Thanks though, @Craftnime!
Answer by Craftnime · Aug 26, 2015 at 01:57 PM
Oh maybe, I forgot to insert yield behind the two coroutine commands. Try both or either! yield StartCoroutine("Blah"); And/or yield StopCoroutine("Blah"); (I edited that answer)
Answer by Jay_Pauly · Aug 26, 2015 at 02:10 PM
Yup I got it. However it does solve the problem. When I pause the application, I don't run the method where the crossFade is implemented. So, as I said, I'm already implementing your solution.
Tried using animation.Blend, this one stops when we step the animation speed to zero, but I don't get the same behaviour as I get with crossFade.
Thanks anyway!