Jump Animatoin clip error

Hello guys, i’ve been trying to make a 3rd person game
animations are controlled by a script.

Run and Idle works fine but when i use jump animation, the clip doesn’t run completely.
It runs until i release the space bar and then goes back to idle.
here is the script i am using for 3rd person controller.

using UnityEngine;
using System.Collections;

public class CharacterController : MonoBehaviour {

    public Animator animator;



	[System.Serializable]
	public class MoveSettings
	{
		public float forwardVel = 9;
		public float rotateVel= 80;
		public float jumpVel =25; 
		public float distToGrounded =0.1f;
		public LayerMask ground;

	}

	[System.Serializable]
	public class PhySettings
	{
		
		public float downAccel=0.75f;
		
	}


	[System.Serializable]
	public class InputSettings
	{
		
		public float inputDelay = 0.1f;
		public string FORWARD_AXIS= "Vertical";
		public string TURN_AXIS= "Horizontal";
		public string JUMP_AXIS= "Jump";
		
	}

	public MoveSettings moveSetting = new MoveSettings ();
	public PhySettings phySetting = new PhySettings ();
	public InputSettings inputSetting = new InputSettings ();


	Vector3 velocity= Vector3.zero;
	Quaternion targetRotation;
	Rigidbody rBody;

	float forwardInput, turnInput, jumpInput;

	public Quaternion TargetRotation{

		get {return targetRotation;}
	}

	bool Grounded ()
	{
		return Physics.Raycast (transform.position, Vector3.down, moveSetting.distToGrounded, moveSetting.ground);

	}


	// Use this for initialization
	void Start () {

		//ANIMACIONES
		animator = GetComponent<Animator>();							
		//FIN ANIMACIONES

		targetRotation = transform.rotation;
		if (GetComponent<Rigidbody> ()) {
			rBody = GetComponent<Rigidbody> ();
		} else {
			Debug.LogError("NECESITA UN RIGIDBODY EL PERSONAJE.");
		}

		forwardInput = turnInput = jumpInput = 0;



	}

	void GetInput()
	{

		forwardInput = Input.GetAxis (inputSetting.FORWARD_AXIS);
		turnInput = Input.GetAxis (inputSetting.TURN_AXIS);
		jumpInput = Input.GetAxisRaw (inputSetting.JUMP_AXIS);
	

	}

	// Update is called once per frame
	void Update () {
		GetInput ();
		Turn ();


	}

	

	void FixedUpdate()	{

		animator.SetFloat ("Run", forwardInput);
		animator.SetFloat ("Jump", jumpInput);
		Run ();
		Jump ();
		rBody.velocity = transform.TransformDirection (velocity);
	
	}

	void Run(){
		if (Mathf.Abs (forwardInput) > inputSetting.inputDelay) {
			//..move

			velocity.z = moveSetting.forwardVel*forwardInput;


					
		} else {
		// ZERO-Velociddad.
			velocity.z=0;
				}

	}

	void Turn(){
	if(Mathf.Abs(turnInput)>inputSetting.inputDelay){
			targetRotation*=Quaternion.AngleAxis(moveSetting.rotateVel*turnInput*Time.deltaTime, Vector3.up);

		}
		transform.rotation = targetRotation;
	}

	void Jump()	{
		if (jumpInput > 0 && Grounded ()) {

			// JUMP

			velocity.y=moveSetting.jumpVel;
		
		} else if (jumpInput == 0 && Grounded ()) {
			//ZERO OUT OUR VELOCITY.Y
			velocity.y=0;


		} else
		{

		//DECRASE VELOCITY.Y

			velocity.y-=phySetting.downAccel;
		
		}

	}



}

Hello,

It appears to me that u are setting floats only found under the parameters tab of the animator window in Unity. In particular, you are setting “Run” and “Jump” floats only found in the unity editor. It would be helpful to see what conditions you put under the parameters tab of the animator window so I can help you out with this problem.

   void FixedUpdate()    {
 
         animator.SetFloat ("Run", forwardInput);
         animator.SetFloat ("Jump", jumpInput);
         Run ();
         Jump ();
         rBody.velocity = transform.TransformDirection (velocity);
     
     }