In here I am trying to get the gameobject (dog) to come to its owners front (just like you would call a dog). I am trying to get it to ignore the players y position though. With this, the error is that the loop never breaks. When the function comeForward is called, it’ll go the leaders front, but will trip out and never be still; it rapidly moves back and forth at the position.
If I just use transform.position instead of current position, it’ll work, but will trip out just the same if on uneven terrain, hence my attempt to get it to ignore the y position of the leader.
function Update(){
var controller : CharacterController = GetComponent(CharacterController);
var forward = transform.TransformDirection(Vector3.forward);
moveDirection.y -= gravity * Time.deltaTime;
//etc
}if (comeHere){
animation.CrossFade("walk");
controller.SimpleMove(forward * speed);
}
}
function ComeForward(){
var currentPosition = transform.position;
currentPosition.y = leader.position.y;
while ( Vector3.Distance( leader.position + leader.forward*3 , currentPosition ) >= .5) {
var lookPos = leader.position - transform.position;
lookPos.y = 0;
var rotation = Quaternion.LookRotation(lookPos);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, rotationSpeed);
comeHere = true;
yield;
}
transform.LookAt(leader.position + leader.right * 5);
animation.CrossFade("idle");
comeHere = false;
}
What am I missing?