// Start is called before the first frame update void Start() { nav = GetComponent <NavMeshAgent>(); nav.SetDestination(endPoint[index].position);//获取目标点位置 temp = nav.speed; tempSpeed = DestoryScript.speed; enemyYD = new EnemyYD(StartPoint, transform, nav, tempSpeed, new EnemyNav()); }
/// <summary> /// 在(ConcreteStateA)状态下,符合条件则开启(ConcreteStateB)敌人追击角色功能。 /// </summary> /// <param name="enemyYD"></param> public override void Handle(EnemyYD enemyYD) { Transform StartPoint = enemyYD.StartPoint; Transform Enemys = enemyYD.Enemys; NavMeshAgent Nav = enemyYD.Nav; float length = (StartPoint.GetChild(0).position - Enemys.position).sqrMagnitude; if (length < 16f) { Debug.Log("追击角色"); Nav.isStopped = true; Enemys.position = Vector3.MoveTowards(Enemys.position, StartPoint.GetChild(0).position, Time.deltaTime * 1.65f); DestoryScript.speed += 1.10f * Time.deltaTime; } else { enemyYD.EnemyYDState = new EnemyNav(); } }
/// <summary> /// 在(ConcreteStateB)状态下,符合条件则开启(ConcreteStateA)敌人自动寻路(不追击角色)功能。 /// </summary> /// <param name="enemyYD"></param> public override void Handle(EnemyYD enemyYD) { Transform StartPoint = enemyYD.StartPoint; Transform Enemys = enemyYD.Enemys; NavMeshAgent Nav = enemyYD.Nav; float tempSpeed = enemyYD.TempSpeed; float length = (StartPoint.GetChild(0).position - Enemys.position).sqrMagnitude; if (length >= 16) { Debug.Log("自动寻路"); Nav.isStopped = false; DestoryScript.speed = tempSpeed; } else { enemyYD.EnemyYDState = new EnemyZJ(); } }
public abstract void Handle(EnemyYD enemyYD);