Run new animation only when previous one is finished

I'm new to Unity and I'm struggling with configuring my animations properly. I have attack animation which must be played if you press the spacebar once and if you hold it it should play until you release. My problem is that once you release the spacebar the animator instantly returns to the previous state. I've read some answer on the Unity Q&A site but they are all concerning a script that runs the animations, I don't use any script to run mine I'm simply setting them up in the animator. How can I fix this ? The way I change the animation is by switching the value of a boolean variable like this :

     if(Input.GetKeyDown(KeyCode.Space))
     {
         IsAttacking = true;
     }
     if(Input.GetKeyUp(KeyCode.Space))
     {
         IsAttacking = false;
     }
     playerAnimator.SetBool("IsAttacking", IsAttacking);

My project is in 2D if it matters.

Upvotes: 1

Views: 102

Answers (1)

Sephe
Sephe

Reputation: 36

Click this -> Exit Time

Inside of the animator you have your clips. Clicking on a clip with bring up this inspector view. You'll want to check Has Exit Time'.

Then you'll want to set your exit time to 1 and your transition duration to 0.

By setting those values, you're telling the animator that this animation MUST finish before moving on to the next one.

Upvotes: 1

Related Questions