How to make a smooth jump?

Using this script when i press Space it teleports up and goes down, how do i make it smoothly jump?
here is the c# script:

using UnityEngine;
using System.Collections;

public class Demo : MonoBehaviour {

private bool canJump;
public GameObject target;
public int moveSpeed = 8;
public Rigidbody m_Rigidbody;
public int jumpHeight;
// Use this for initialization

// Update is called once per frame
void Update () {

	if (Input.GetKey (KeyCode.W)) {
		transform.position += (Vector3.left * moveSpeed * Time.deltaTime);

	if (canJump && Input.GetKey(KeyCode.Space)) {
		transform.position += (Vector3.up * jumpHeight * Time.deltaTime);

void OnTriggerEnter(Collider collision){
	Debug.Log("can jump");
	canJump = true;

void OnTriggerExit(Collider collision){
	Debug.Log("can;t jump");
	canJump = false;

public void die(GameObject destrucionTarget){
	Destroy (destrucionTarget);


Instead of setting the position, set the velocity of the rigidbody to be up. Then the gravity will make the rigid body fall down.

You will need to check that the player is standing on the ground (a raycast can do this).

You can see a partial example in the unity scripting reference Rigidbody.velocity Unity - Scripting API: Rigidbody.velocity

You can use the Unity’s rigidbody physics or make your own. It isn’t that difficult.

In real world. Objects accelerate in free fall at around 10m/s^2 (9.8 really) this means that objects location at y-axis is:

 y = groundLevel + jumpingSpeed * time - 10 * time * time