1
\$\begingroup\$

Im following a tutorial to create animations with a 2D sprite character. But i put in my own. Which has 8 animation positions. For some reason when my guy walks around,then stop, the walkings animation continues to play out then resets to idles.

I need the animation to reset as soon as i release the key.

Im using Animator if you are wondering.

EDITED: Original video with all the keys for each animations. Youtube video

Second video with only 2 keys per animation, it was a test. Second Video Here

Code Snipet!

using UnityEngine;
using System.Collections;

public class PlayerMovement : MonoBehaviour {

public float speed;

private Animator _animator;
private Rigidbody2D _rigidbody2D;

// Use this for initialization
void Start () {
    _animator = GetComponent <Animator>();
    _rigidbody2D = GetComponent <Rigidbody2D>();
}

// Update is called once per frame
void Update () {
    CheckDirection();
}

void CheckDirection(){
    if (Input.GetKey (KeyCode.A))
    {
        WalkAnimation(-1,0,true);
    }
    else if (Input.GetKey (KeyCode.D))
    {
        WalkAnimation(1,0,true);
    }
    else if (Input.GetKey (KeyCode.W))
    {
        WalkAnimation(0,1,true);
    }
    else if (Input.GetKey (KeyCode.S))
    {
        WalkAnimation(0,-1,true);
    }
    else 
    {
        _animator.SetBool("Walking", false);
    }
}

void FixedUpdate (){
    Move();
}

void Move(){
    float dirX = _animator.GetFloat("VelX");
    float dirY = _animator.GetFloat("VelY");
    bool walking = _animator.GetBool("Walking");

    if (walking)
    {
        _rigidbody2D.velocity = new Vector2(dirX,dirY) * speed;
    }
    else
    {
        _rigidbody2D.velocity = Vector2.zero;
    }
}


void WalkAnimation (float x, float y, bool walking){
    _animator.SetFloat("VelX", x);
    _animator.SetFloat("VelY", y);
    _animator.SetBool("Walking", walking);
}

}
\$\endgroup\$
2
\$\begingroup\$

If you want your transition to have immediate effect you need to make sure that Has Exit Time is not checked in your transition.

Has Exit Time determines whether the transition’s condition can take effect at any time, or only during the state’s exit time.

http://docs.unity3d.com/Manual/class-Transition.html

has exit time

\$\endgroup\$
0
\$\begingroup\$

I suppose you use Animation class. According to this page, calling

animation.Stop("%%animationName%%"); 

will stop animation.

\$\endgroup\$
  • \$\begingroup\$ i dont use animation class. \$\endgroup\$ – Alex Dec 7 '15 at 4:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.