- Home /
Idle animation plays while running (2D)
I have my character on stage with a transition between the Idle and Running animation, which is triggered when the parameter Speed is greater than 0.1, and a transition back when Speed is less than 0.1.
The animations are working however, when the character turns around and runs in the opposite direction, the idle animation plays for a second before switching to the running animation, causing the character to slide across the screen for a moment. It looks really terrible and I have no idea how to fix this. Any help will be greatly appreciated!
Here is the script for the character movement
 public class PlayerScript : MonoBehaviour {
 
     public float maxSpeed = 10f;
     private bool facingRight = true;
 
     private Rigidbody2D rb2d;
     private Animator anim;
 
     void Start()
     {
         rb2d = gameObject.GetComponent<Rigidbody2D>();
         anim = gameObject.GetComponent<Animator>();
     }
 
     void FixedUpdate()
     {
         float move = Input.GetAxis("Horizontal");
 
         //    Set Animator parameter
         anim.SetFloat("Speed", Mathf.Abs (move));
 
         rb2d.velocity = new Vector2(move * maxSpeed, rb2d.velocity.y);
 
         //    Flip Player direction
         if (move > 0 && !facingRight) {
             flip ();
         } else if (move < 0 && facingRight) {
             flip ();
         }
     }
 
     void flip()
     {
         facingRight = !facingRight;
         Vector3 scale = transform.localScale;
         scale.x *= -1;
         transform.localScale = scale;
     }
 }
EDIT
Checking Exit Time on the transition from Run -> Idle prevents the character from sliding. But of course, now there is another problem. The running animation still plays for a second after the character actually stops. Any suggestions?
Well it's doing what you told it to do - your speed when turning will go below 0.1. You could maybe alleviate this with a new 'skidding' anim when speed is between 0.1 and 0, or play around with the anim transitions (http://docs.unity3d.com/$$anonymous$$anual/class-Transition.html)
Perhaps you can add an additional condition, e.g. play the idle animation if speed == 0 && acceleration == 0.
Answer by spooneystone · Jul 09, 2015 at 10:41 PM
Try and change input.getaxis to input. GetaxisRaw.
I tried this but the character still slides, thanks anyway :)
Your answer
 
 
             Follow this Question
Related Questions
Delay the execution of something 1 Answer
Multiple Cars not working 1 Answer
How do I put a delay in this? 2 Answers
Distribute terrain in zones 3 Answers
Playing animation at the start 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                