- Home /
how to make animation wait for another animation
I am new at unity and I just started to learn about animations and animator. I am making a simple game where player can walk(and at that time walk animation is playing) or hit (at that moment attack animation is playing) also it can jump (jump animation is played). Otherwise player is in idle state (idle animation playing). Problem is, when I try to hit, it doesn't hit (It's seen that animator starts to play the hit animation but then starts idle animation). My opinion is that after one frame is rendered, Another Update is called and so idle animation is played even though attack is not ended yet. My code looks like this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KnightController : MonoBehaviour {
private Rigidbody2D _rigidBody;
private Animator _animator;
private bool _isGrounded;
private bool _isJumped;
void Start () {
_rigidBody = GetComponent<Rigidbody2D>();
_animator = GetComponent<Animator>();
_isGrounded = true;
_isJumped = false;
}
// Update is called once per frame
void Update () {
float walkSpeed = Input.GetAxis("Horizontal");
if (Mathf.Abs(walkSpeed) > float.Epsilon && _isGrounded)
{
Vector2 oldVelocity = _rigidBody.velocity;
_rigidBody.velocity = new Vector2(walkSpeed * 3, oldVelocity.y);
transform.localScale = new Vector2(Mathf.Sign(walkSpeed), transform.localScale.y);
_animator.Play("KnightWalk");
}
if (Input.GetKey(KeyCode.W))
{
_isJumped = true;
}
if (Mathf.Abs(walkSpeed) <= float.Epsilon && _isGrounded)
{
_animator.Play("KnightIdle");
}
if (Input.GetMouseButtonDown(0))
{
_animator.Play("KnighAttack");
}
}
private void FixedUpdate()
{
if (_isJumped)
{
if (_isGrounded)
{
_rigidBody.AddForce(new Vector2(0, 160));
_animator.Play("KnightJump");
}
_isJumped = false;
}
}
private void OnCollisionStay2D(Collision2D collision)
{
_isGrounded = true;
}
private void OnCollisionExit2D(Collision2D collision)
{
_isGrounded = false;
}
}
Any suggestion on how to fix it? If I'm doing something wrong, do not hesitate to tell please.
Answer by haruna9x · Oct 01, 2017 at 04:05 PM
When you click on any transition, look at the Has Exit Time property. If it is true, your character will be required to play the animation (including the mix) to be able to move on to the next animation.
It will be easier to find some video tutorials using Animation State. I found a little video here.
Your answer
Follow this Question
Related Questions
2D Animation does not start 1 Answer
[C#] [2D] Animation mostly not working 1 Answer
2d Animation sprites - right way? 0 Answers
2D Animator: how to get rid the animation "blending" 0 Answers
Delete Object After Animation (2D) 6 Answers