using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class BringEnemyScript : MonoBehaviour {
public GameObject[] GoOnPatrolPoint;
NavMeshAgent enemynavmeshagent;
int count=1;
Animator EnemyAnimator;
bool startoroutine;
GameObject distance;
Vector3 distancePosition;
bool IsAttack;
// Use this for initialization
void Start () {
EnemyAnimator = GetComponent<Animator> ();
enemynavmeshagent= GetComponent<NavMeshAgent> ();
enemynavmeshagent.destination = GoOnPatrolPoint[0].transform.position;
}
// Update is called once per frame
void Update () {
Collider[] Players= Physics.OverlapSphere (this.transform.position, 9);
if(Players!=null){
foreach( Collider _AttackPlayer in Players){
if (_AttackPlayer.name != "humanoid_dying") {
IsAttack = false;
continue;
}
if (_AttackPlayer.name == "humanoid_dying") {
IsAttack = true;
StopCoroutine ("ChangeDestination");
distance = _AttackPlayer.gameObject;
this.transform.LookAt (distance.transform.position);
}
if((_AttackPlayer.transform.position-this.transform.position).magnitude<1){
EnemyAnimator.SetBool ("Attack",true);
}
EnemyAnimator.SetBool ("ToRun",true);
enemynavmeshagent.destination=_AttackPlayer.transform.position;
}
if(enemynavmeshagent.remainingDistance==0&&startoroutine==false){
StartCoroutine ("ChangeDestination");
}
if(distance!=null&&(distance.transform.position - this.transform.position).magnitude >= 10&&!IsAttack){
EnemyAnimator.SetBool ("ToRun",false);
EnemyAnimator.SetBool ("Attack",false);
enemynavmeshagent.destination = distancePosition;
}
}
}
IEnumerator ChangeDestination(){
startoroutine = true;
EnemyAnimator.SetTrigger ("Idle");
yield return new WaitForSeconds (EnemyAnimator.GetCurrentAnimatorStateInfo(0).length);
this.transform.Rotate(Vector3.Lerp(new Vector3(0,0,0),new Vector3(0,180,0),0.3f));
enemynavmeshagent.destination = GoOnPatrolPoint[count%GoOnPatrolPoint.Length].transform.position;
count++;
distancePosition = enemynavmeshagent.destination;
startoroutine = false;
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class BringEnemyScript : MonoBehaviour {
public GameObject[] GoOnPatrolPoint;
NavMeshAgent enemynavmeshagent;
int count=1;
Animator EnemyAnimator;
bool startoroutine;
GameObject distance;
Vector3 distancePosition;
bool IsAttack;
// Use this for initialization
void Start () {
EnemyAnimator = GetComponent<Animator> ();
enemynavmeshagent= GetComponent<NavMeshAgent> ();
enemynavmeshagent.destination = GoOnPatrolPoint[0].transform.position;
}
// Update is called once per frame
void Update () {
Collider[] Players= Physics.OverlapSphere (this.transform.position, 9);
if(Players!=null){
foreach( Collider _AttackPlayer in Players){
if (_AttackPlayer.name != "humanoid_dying") {
IsAttack = false;
continue;
}
if (_AttackPlayer.name == "humanoid_dying") {
IsAttack = true;
StopCoroutine ("ChangeDestination");
distance = _AttackPlayer.gameObject;
this.transform.LookAt (distance.transform.position);
}
if((_AttackPlayer.transform.position-this.transform.position).magnitude<1){
EnemyAnimator.SetBool ("Attack",true);
}
EnemyAnimator.SetBool ("ToRun",true);
enemynavmeshagent.destination=_AttackPlayer.transform.position;
}
if(enemynavmeshagent.remainingDistance==0&&startoroutine==false){
StartCoroutine ("ChangeDestination");
}
if(distance!=null&&(distance.transform.position - this.transform.position).magnitude >= 10&&!IsAttack){
EnemyAnimator.SetBool ("ToRun",false);
EnemyAnimator.SetBool ("Attack",false);
enemynavmeshagent.destination = distancePosition;
}
}
}
IEnumerator ChangeDestination(){
startoroutine = true;
EnemyAnimator.SetTrigger ("Idle");
yield return new WaitForSeconds (EnemyAnimator.GetCurrentAnimatorStateInfo(0).length);
this.transform.Rotate(Vector3.Lerp(new Vector3(0,0,0),new Vector3(0,180,0),0.3f));
enemynavmeshagent.destination = GoOnPatrolPoint[count%GoOnPatrolPoint.Length].transform.position;
count++;
distancePosition = enemynavmeshagent.destination;
startoroutine = false;
}
}