- Home /
Reset animation to beginning
I have an animation set up with an animation controller. It goes from the default state to the animation with one transition (bool) set to true. The animation is not on a loop. Script below:
[SerializeField] private Animator myAnimationController;
void Update()
{
if (Input.GetKeyDown(KeyCode.J))
{
myAnimationController.SetBool("PlayBook", true);
}
}
}
This works fine, but I want the animation to reset to the beginning frame when I press J again. So the first time I press the key I want it to play, and the second time to reset, and continue that way indefinitely. How to I make this happen?
Answer by Pangamini · Nov 21, 2019 at 12:36 AM
Use SetTrigger instead of SetBool (it's similar, but resets to false immediately when the 'true' value is consumed by a transition. Then, have a state transit to itself if the trigger is hit
This does reset it, but I don't want the animation to reset until I press the $$anonymous$$ey. So press the key to play it, then press again to reset it. For instance, I have something that floats into few of the camera when I press the key, and I want it to float back when I press it again. It works with the SetBool if I use one key to to toggle it to true, and a different one to toggle it to false, but I only want to use the one key.
Answer by aadil50 · Nov 21, 2019 at 04:52 AM
Use IEnumerator Function for this purpose, i.e. wait for animation to finish and then do whatever you want
IEnumerator WaitforAnimationToFinish()
{
yield return new WaitForSeconds(myAnimationController.GetCurrentAnimatorStateInfo (0).length);
// Start Animation Again if you want...
}
Hope it may solve your problem..
Answer by ionside · Nov 22, 2019 at 04:01 AM
If you don't need to use a parameter (bool, etc.) you could use normalizedTime to play the animation from 0 every time it is played.
void Update()
{
if (Input.GetKeyDown(KeyCode.J))
{
myAnimationController.Play("animState", -1, normalizedTime = 0.0f);
}
}
https://docs.unity3d.com/ScriptReference/Animator.Play.html and https://docs.unity3d.com/ScriptReference/AnimationState-normalizedTime.html could give you more info.
Your answer

Follow this Question
Related Questions
Play animation of FPS player after hitting trigger 2 Answers
Cardboard VR app - add touch buttons to send keyboard arrows to scene 0 Answers
How to update a value within a List in another script? 1 Answer
My player keeps dashing 0 Answers
Vector3 ambiguous between System.Numerics.Vector3 and UnityEngine.Vector3 1 Answer