Bad gravity in enemy

Script works for me fine but I have problem with tilting enemy (bad gravity going for tilting enemy mesh), any suggestion?

var target : Transform;
var gravity : float = 20;
var moveSpeed : float = 6;  // chase speed
var rotSpeed : float = 90;  // speed to turn to the player (degrees/second)

var DistanceFromPlayer;
var DistanceFromWayPoint;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var moveSpeed = 0.1;

var controller : CharacterController;

private var rotation;
private var gravity : float = 9.8;
private var Damping = 6.0;
private var MoveDirection : Vector3 = Vector3.zero;
private var currentWayPoint : int;

public var waypoint : Transform[];

function Update ()
{
	DistanceFromPlayer = Vector3.Distance(Target.position, transform.position);
	rigidbody.AddForce(Vector3 (0, -gravity*rigidbody.mass, 0));
		
	if (DistanceFromPlayer < chaseRange){
		chase ();
		
		if(DistanceFromPlayer < 3){		
			Debug.LogError("Dead!");
		}
	}
	/*else if (DistanceFromPlayer < lookAtDistance){
		lookAt();
	}
	*/
	else {
		patrol();
	}
		
	

}
function patrol(){
	if (currentWayPoint < waypoint.Length)
    {
		rotation = Quaternion.LookRotation(waypoint[currentWayPoint].position - transform.position);
		transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);   
        
        moveDirection = transform.forward;
		moveDirection *= moveSpeed;
		
		//moveDirection   = moveDirection.normalized * moveSpeed;
    	//moveDirection.y = Mathf.Clamp(character.velocity.y, -30, 2);
	
		moveDirection.y -= gravity * Time.deltaTime;
		
		controller.Move(moveDirection * Time.deltaTime);
		
		DistanceFromWayPoint = Vector3.Distance(waypoint[currentWayPoint].position, transform.position);
		
		if(DistanceFromWayPoint < 5){
			currentWayPoint++;	
			if(currentWayPoint == waypoint.Length){
				currentWayPoint = 0;
			}
		}
    }    
}

function lookAt ()
{
	renderer.material.color = Color.yellow;
	rotation = Quaternion.LookRotation(Target.position - transform.position);
	transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}

function chase ()
{
	lookAt();
	
	renderer.material.color = Color.red;
	
	moveDirection = transform.forward;
	moveDirection *= moveSpeed;
	
	//moveDirection = moveDirection.normalized * moveSpeed;
    //moveDirection.y = Mathf.Clamp(character.velocity.y, -30, 2); 
    
	moveDirection.y -= gravity * Time.deltaTime;
	
	controller.Move(moveDirection * Time.deltaTime);
}

Had this bug yesterday, not sure if it works, but basically you need to use if (controller.isGrounded) on your moveDirection = transform and moveDirection *= moveSpeed.

Thanks a lot! I fotgot …