Adding a jump feature help?

I created this script for a specific project and when i added my versions of jumping I ended up seeing undesirable results in how fast my character jumped and the time it took for it to fall. Is there any way to add a nice jump feature using the gravity i have initialized?

using UnityEngine;
using System.Collections;

[RequireComponent (typeof(CharacterController))]
public class AdvancedMovement : MonoBehaviour {

public float runSpeed = 0.1f;
public float strafeSpeed = 2.5f;
public float gravity = 20;

private CharacterController _controller;	//Our cached CharacterController.

public void Awake() {

	_controller = GetComponent<CharacterController>();

}

void Start () {
	
	animation.wrapMode = WrapMode.Loop;

}

void Update () {
	
	_controller.Move(Vector3.down * gravity * Time.deltaTime);
	
	if(_controller.isGrounded){
		
		_controller.Move(Vector3.forward * runSpeed);
		animation.CrossFade("RunInPlace");
	
	}	
		
	if(Input.GetButton("Strafe")){
		animation.CrossFade("RunInPlace");
		_controller.Move(Vector3.right * Input.GetAxis("Strafe") * strafeSpeed);
	
	}		
			
}

}

What you want to do is track the velocity, and add Gravity to that, instead of adding the gravity directly to the position.

So, add a variable to track the Y-Velocity. Each frame, add the gravity. Then, use that velocity to move the character. That will give you the parabolic arc you are looking for.

Instead of using:

   _controller.Move(Vector3.down * gravity * Time.deltaTime);

You should try to use:

   _controller.Move(Vector3.down -= gravity * Time.deltaTime);

Theres no guarantees that this will work, check this for more Help