it goes haywire when it comes incontact with two players.
Modified(Edited code): enemy now goes unhuman speeds when he moves to the player, then he just stops..., moves out of his trigger box, moves back in again normal then it speeds up.
@Vreg void OnTriggerEnter(Collider other){ //this will check what has entered the trigger
if (playerchosen) {
} else {
if (other.gameObject.tag == "Player") {
print ("player found");
playerchosen = true;
Player = other.gameObject;
}
}
print ("Player Chosen: " +playerchosen);
}
void OnTriggerStay(Collider other){
if (playerchosen) {
Vector3 direction = Player.transform.position - this.transform.position;
Quaternion rotation = Quaternion.LookRotation (direction);
if (rotation.x != 0) {
rotation.x = 0;
}
if (rotation.z != 0) {
rotation.z = 0;
}
this.transform.rotation = Quaternion.Slerp (this.transform.rotation,
rotation, Time.deltaTime + damping);
if (Vector3.Distance (Player.transform.position, this.transform.position) < 15) {
anim.SetBool ("IsIdle", false);
if (direction.magnitude > 1) {
this.transform.Translate (0, 0, 0.1f);
anim.SetBool ("IsWalking", true);
anim.SetBool ("IsAttacking", false);
} else {
anim.SetBool ("IsAttacking", true);
if (canAttack) {
print ("Before invoke");
canAttack = false;
Invoke ("waiting", 2f);
print ("After invoke");
} else {
}
anim.SetBool ("IsWalking", false);
}
} else {
}
} else {
playerchosen = false;
}
print ("Player Chosen: " +playerchosen);
}
void OnTriggerExit(Collider other){ //this will check what has left the trigger
if (other.gameObject.tag != "Player") {//if the game object that left was not a player
playerchosen = true;
} else {
anim.SetBool ("IsWalking", false);
playerchosen = false;
print ("Player left");
}
print (playerchosen);
}
Follow @SLO_MMORPG