- Home /
problem with LookRotation on simple AI
Hi, i'm currently making a 2.5D game where you assign target to characters by clicking on the wanted target, then the characters walk to it and attack it. Everything work except that when character stack near a target after destroying it, some of them go away from the others and go in a totally different direction. giving them a new target don't change anything to their direction while the other correctly follow the new target.
I have a script on my character prefab for the AI, and a script on the different target to report the mouseclick.
here is the AI script : var moveSpeed : int = 1; var rotationSpeed : int = 1; var maxDistance : int; var attackTimer : float; var coolDown : float; private var myTransform : Transform; private var clickTarget : Transform; var ExitPoint : Transform; var blocked : boolean = false;
function Awake() { clickTarget = ExitPoint; myTransform = transform; attackTimer = 0; coolDown = 2.0f; }
function Start() { maxDistance = 2; }
function Update () {
if(TargetSelect.newTarget == true){
clickTarget = TargetSelect.target.transform;
}
else{
clickTarget = ExitPoint;}
//Look at clickTarget
var relativePos = clickTarget.position - myTransform.position;
var quatRotat = Quaternion.LookRotation(relativePos);
myTransform.rotation.y = quatRotat.y;
Debug.DrawLine(clickTarget.position, myTransform.position, Color.yellow);
if(Vector3.Distance(clickTarget.position, myTransform.position) > maxDistance && !blocked) {
//Move towards clickTarget
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
// Attacking
if (attackTimer > 0) {
attackTimer -= Time.deltaTime;
}
if(attackTimer < 0){
attackTimer = 0;
}
if(attackTimer == 0) {
Attack();
attackTimer = coolDown;
}
}
function Attack () { var distance = Vector3.Distance(clickTarget.transform.position, transform.position); var dir = (clickTarget.transform.position - transform.position).normalized; var direction = Vector3.Dot(dir, transform.forward); if(distance < 2.5f){ if(direction > 0) { eh = clickTarget.GetComponent("Health"); eh.AdjustCurrentHealth(-10); } } }
and here is a link to a webplayer if you can't understand the problem : http://dl.dropbox.com/u/6912146/proto_02/WebPlayer.html
Your answer
Follow this Question
Related Questions
Simulating Mouse Input for AI 0 Answers
Follow up to AI Pathfinding Question 0 Answers
Clamping LookRotation. 1 Answer
Turret Rotation Problems 1 Answer
I need to instantiate a empty gameObject 2 Units right/left of a 'Enemies' Transform? 3 Answers