Enemy Ai Problem with the collider and gravity

Hello Unity3d Community i have a problem… my enemy floats in the air while chasing the player, i’v trieda few things like making a rigidbody and locking the "Y"axis but it doesnt look good, when i’m close the enemy the enemy it laysdown underneath the player.
if i use the rigidbody it falls through the floor but if i attach a boxcollider it flies around like crazy, any help??

i just want the enemy to stand on the ground, and stand up until it dies, anyways heres the enemy’s AI:

var Distance : float;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var attackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var attackRepeatTime = 1;
var body : Transform;

private var attackTime : float;

var controller : CharacterController;
var gravity : float = 20.0;
private var MoveDirection : Vector3 = Vector3.zero;

function Start ()
{
	attackTime = Time.time;
}

function Update ()
{
	Distance = Vector3.Distance(Target.position, transform.position);
	//transform.position.y=-62.25803;
	
	if (Distance < lookAtDistance)
	{
		lookAt();
	}
	
	if (Distance > lookAtDistance)
	{
		renderer.material.color = Color.green;
	}
	
	if (Distance < attackRange)
	{
		attack();
	}
	else if (Distance < chaseRange)
	{
		chase ();
	}
	else if (Distance > chaseRange)
	{
		body.animation.CrossFade("idle");
	}
}

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

function chase ()
{
	body.animation.CrossFade("walk");
	renderer.material.color = Color.red;
	transform.Translate(Vector3.forward * moveSpeed *Time.deltaTime);
	
}

function attack ()
{
	if (Time.time > attackTime)
	{
		body.animation.CrossFade("punch");
		Debug.Log("Insert attack here");
		attackTime = Time.time + attackRepeatTime;
	}
}

function ApplyDammage ()
{
	//body.animation.Play("cubebla");
	chaseRange += 30;
	moveSpeed += 2;
	lookAtDistance += 40;
}

You can set a terrain collision to avoid the falling of your character.