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;
}
}
}