Im trying to make my enemies return to original point of spawn when the player is more than 25 units away, however, i suspect there´s a slight error somewhere in my method as it does NOT waddle back to it´s point of origin, and just sits there staring into my soul with it´s empty cold eyes.
var target : Transform;
var moveSpeed = 20;
var rotationSpeed = 5;
var myTransform : Transform;
var follow : boolean = true;
private var startPosition : Vector3;
var ReturnToPosition : boolean = false;
function Awake()
{
myTransform = transform;
}
function Start()
{
startPosition = transform.position; //store the start position
target = GameObject.FindWithTag("Player").transform;
}
function Update () {
var distance = Vector3.Distance(target.position,myTransform.position);
if(distance < 2){ follow = false; }
if(distance > 2){ follow = true; }
if(distance > 25){ follow = false; }
if(follow == true) { myTransform.rotation = Quaternion.Slerp(myTransform.rotation,Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
if(distance > 25) { ReturnToPosition = true; }
if(ReturnToPosition == true) {
//rotate to look at the start position
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(startPosition.position - myTransform.position),rotationSpeed*Time.deltaTime);
//move back to start position
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
}
}