var target1 : Transform;
var moveSpeed : int;
var rotationSpeed : int;
var maxDistance : int;
var minDistance : int;
private var myTransform : Transform;
function Awake() {
myTransform = transform;
}
function Update()
{
if(target1) {
var dist = Vector3.Distance(target1.position, transform.position);
}
if (dist <= minDistance) {
print ("I found you"+ dist);
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target1.position
- myTransform.position) , rotationSpeed
* Time.deltaTime);
//if enemy is farther than 2 units away
if (Vector3.Distance(target1.position, myTransform.position) > maxDistance) {
// Move towards target
myTransform.position += myTransform.forward
* moveSpeed * Time.deltaTime;
}
if (dist >= minDistance){
Idle();
}
}
}
var walkSpeed = 3.0;
var rotateSpeed = 30.0;
var directionTraveltime = 2.0;
var idleTime = 1.5;
//------------------------------------------------------------------
private var timeToNewDirection = 0.0;
var target : Transform;
// Cache the controller
private var characterController : CharacterController;
characterController = GetComponent(CharacterController);
//------------------------------------------------------------------
function Start ()
{
var go = GameObject.FindWithTag ("Player");
target1 = go.transform;
maxDistance = 2;
if (!target)
target = GameObject.FindWithTag("Player").transform;
yield WaitForSeconds(idleTime);
while (true)
{
// Idle around and wait for the player
yield Idle();
}
}
function Idle ()
{
// Walk around and pause in random directions unless the player is within range
while (true)
{
// Find a new direction to move
if(Time.time > timeToNewDirection)
{
yield WaitForSeconds(idleTime);
if(Random.value > 0.5)
transform.Rotate(Vector3(0,5,0), rotateSpeed);
else
transform.Rotate(Vector3(0,-5,0),rotateSpeed);
timeToNewDirection = Time.time + directionTraveltime;
}
var walkForward = transform.TransformDirection(Vector3.forward);
characterController.SimpleMove(walkForward * walkSpeed);
yield;
}
}
this is currently my enemy ai script. My enemy will randomly walk around and when the player gets within a certain “min” distance of the enemy he will start to chase the player until you move out of his “min” distance. The problem is when ever the enemy gets within 2 units of you hes not supposed to come any close. Currently with this script the enemy will walk around randomly like hes supposed to and chase the player correctly. However, when he gets close he will come collider to collider and start to circle the player. Any tips on where I went wrong. and how i could fix this?