Unity3D le mouvement du Joueur de script

J'ai un script qui vous permet de contrôler un joueur, et de sauter.
Cependant, j'essaie de faire en sorte que le joueur est constamment en mouvement, et non contrôlable via les touches WASD du clavier.
Chaque fois que j'essaie d'utiliser seulement controller.Move() mon Gravité de la fonction disparaît.
En ce moment, avec ce code Gravité fonctionne, mais WASD est activé en tant que bien.
Ma question est: Comment puis-je faire de ce code que mon lecteur se déplacer constamment, et de toujours utiliser la gravité?

using UnityEngine;
using System.Collections;

public class PlayerMotor : MonoBehaviour {

    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;

    private Vector3 moveDirection = Vector3.back;
    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded)
        {
            controller.Move (Vector3.back * Time.deltaTime);
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;

        }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }
}

OriginalL'auteur Lynnstrum | 2016-09-24