Adding more life to AI

Right now I have my AI working so it follows the player if they are within a certain distance. I want to make it so the AI has a little more life to it such as running away from the player, running around the player, or just make it seem like the AI has a lot more movement than running straight at the player. Anyone have any good ways of doing this ?

Here is my current code.

var target : Transform; //the enemy's target
    
var moveSpeed = 3; //move speed

var rotationSpeed = 3; //speed of turning  

static var enemyhealth = 50000;    

static var enemyMaxHealth = 50000;  

var minDamage = 500;   

var maxDamage = 1000;
  
static var enemyDead:boolean = false;   

var myTransform : Transform; //current transform data of this enemy
   
var attackDelay  = 1.0f;

private var nextDamageEvent : float;   

var enemyInCombat:boolean = false;    

function Awake()

{

    myTransform = transform; //cache transform data for easy access/preformance

}



function Start()

{

     target = GameObject.FindWithTag("Player").transform; //target the player



}



function Update () {
   

if(enemyhealth <=0) {
 

enemyhealth = 0;
  
enemyDead = true;
   

}

 
if(enemyhealth > enemyMaxHealth) {



enemyhealth = enemyMaxHealth;   

}
   

if(enemyDead == false ) {




	if(target) {


	var dist = Vector3.Distance(target.position, transform.position);

	

	}



if(dist >1  && dist < 10)  {



var enemylook = target.position - myTransform.position;



enemylook.y = 0;



  //rotate to look at the player

    myTransform.rotation = Quaternion.Slerp(myTransform.rotation,

    Quaternion.LookRotation(enemylook), rotationSpeed*Time.deltaTime);




}


if(dist > 10 && dist <200) {


var enemylook2 = target.position - myTransform.position;
 

enemylook2.y = 0;


  //rotate to look at the player

    myTransform.rotation = Quaternion.Slerp(myTransform.rotation,

    Quaternion.LookRotation(enemylook2), rotationSpeed*Time.deltaTime);




    //move towards the player

    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
 

}



if(dist < 15 && wowmovement.dead == false) {



//deal damage



//changinghptext.currentplayerhp -= 100;



    if (Time.time >= nextDamageEvent)

        {

            nextDamageEvent = Time.time + attackDelay;

            // Do damage here

			

			var enemyDamage2 = Random.Range(minDamage,maxDamage);

			
  			

        }

    }

    else

    {

        nextDamageEvent = Time.time + attackDelay;		

    }

	

	

if(enemyInCombat == false) {



enemyhealth = enemyMaxHealth;





//go back to node



}



if(dist > 1 && dist <50 && enemyDead == false) {

 
enemyInCombat = true;
 

}



else if ( dist > 50)  {



enemyInCombat = false;

   
}



}

}

Just to clarify, are you looking for ways to handle more sophisticated logic for your AI or are you looking for specific solutions for how to move around more realistically?

Assuming the former, I suggest you take a look at “Behave” for Unity. If you don’t want a ready-made solution, you should do some reading on Finite State Machines and/or Behavior Trees. These are the tools that AI guys use to make their AI seem more realistic.