Enemy rams my player?

Hi,I want to make enemy stop when he is near the player.
Right now enemy starts follow player when the distance is 20 but I want it to stop when distance is 2! How can I make enemy stop when near the player???..
right now it rams my player!

enemy script is:

var player : GameObject; 
var speed : float = 1;

function Start () { 
  player = GameObject.FindGameObjectWithTag("Player");
  if (!player) Debug.Log ("ERROR could not find Player!");
}

function Update() { 
  if (!player) return;
  var distance = Vector3.Distance( player.transform.position, transform.position);
  if ( distance < 20 ) {
    Debug.Log ("player is close");
    var delta = player.transform.position - transform.position;
    delta.Normalize();
    var moveSpeed = speed * Time.deltaTime;
    transform.position = transform.position + (delta * moveSpeed);
  } else { 
    Debug.Log("not close yet " + distance); 
  } 
}

You must modify a little the logic and test the min distance first, like this:

function Update() { 
  if (!player) return;
  var distance = Vector3.Distance( player.transform.position, transform.position);
  if ( distance <= 2 ){    // if distance <= 2m...
    Debug.Log ("Attack!"); // attack player
  } else                   // else check if distance inside detection limit
  if ( distance < 20 ) {
    Debug.Log ("player is close");
    ...