idle > walk > run animation

Hey i’m making a 2d platformer. I have managed to get my 2d sprite to idle and walk.
Now i’m trying to add a run fuction. So, when you press Shift you go faster. This works, how ever the run animation doesn’t play?

I have the animator set up like this:

idle (speed > 0.1) walk (speed > 4.0) run

And similar to going back to walking and idle ofcourse.

Am i doing this wrong?


using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {
	public float speed = 4.0f;
	private Transform myTransform;

	Animator anim;

	// Use this for initialization
	void Start () {
		myTransform = transform;
		anim = GetComponent<Animator> ();
	// Update is called once per frame
	void Update () {
		anim.SetFloat("speed", Mathf.Abs(Input.GetAxis("Horizontal")));
		//move horizontal
		myTransform.Translate(Vector2.right * Input.GetAxis ("Horizontal") * speed * Time.deltaTime);

		if(Input.GetKey (KeyCode.LeftShift)) {
			speed = 8.0f;

		} else if(!Input.GetKey (KeyCode.LeftShift)){
			speed = 4.0f;

You only insert floats from 0 to 1 into the speed parameter…

anim.SetFloat("speed", Mathf.Abs(Input.GetAxis("Horizontal")));

should be something like:

anim.SetFloat("speed", speed*Mathf.Abs(Input.GetAxis("Horizontal")));