- Home /
getting enemys to follow character.
right iv got my enemy following my characters when he comes into range. im using two scripts:
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); }
}
and
var minimumRunSpeed = 2.0;
function Start () { // Set all animations to loop animation.wrapMode = WrapMode.Loop;
animation["idle"].layer = -1; animation["walk"].layer = -1;
animation.Stop();
}
function SetSpeed (speed : float) { if (speed > minimumRunSpeed) animation.CrossFade("walk"); else animation.CrossFade("idle"); }
my enemy follows me but im stuck with a few things, hoping someone can help me out. first of all the enemy doesn't face me, secondly i dont know how to get his animations playing (i have 2 animations idle, and walk) and he walks through objects too. all help appreciated
Answer by Ashkan_gc · Apr 23, 2010 at 06:49 PM
you can write a much simpler code
var player:GameObject;
function Update()
{
transform.LookAt (player.transform); //you look at player with this
transform.Translate (0,0,speed*Time.deltaTime); //moves with speed in local z and you are looking toward him so you move toward the player
//write other codes here
}
i don't understand your question about animations but you can start walk animation when you move with CrossFade method and start idle when you don't move.
thanks for the quick reply. iv tried using the code but im getting an error at (4,18). iv got my character tagged as player. : /
thank you! iv got it to work now i changed it to
var LookAtTarget:Transform; function Update() { transform.LookAt (LookAtTarget); //you look at player with this transform.Translate (0,0,5*Time.deltaTime); //moves with speed in local z and you are looking toward him so you move toward the player //write other codes here }
Your answer
Follow this Question
Related Questions
Audio Source AI Attractor 2 Answers
How to make AI enemy do damage and only attack inside a distance or range 2 Answers
Detect player in range of enemy... 4 Answers
enemy waypoints and detection scipting 2 Answers
Enemy tank AI script TopDown 0 Answers