private IEnumerator Start() { while (true) { target = targetSearcher.Find(); if (target != null) { if (!sightChecker.IsTargetOnSight(target)) { yield return(moveTask.MovingToBetterPosition(target)); } yield return(new WaitForSeconds(durationShooting)); } yield return(null); } }
public virtual IEnumerator MovingToBetterPosition(GameObject target) { Vector3 startMovePos = transform.position; float movedDistance = 0; StartMoving(target); while (true) { yield return(null); if (sightChecker.IsTargetOnSight(target) || movedDistance >= distanceMove) { StopMoving(); break; } movedDistance = Vector3.Distance(startMovePos, transform.position); } }
private IEnumerator AttackEnemyLoop() { GameObject target = null; while (true) { target = targetSearcher.Find(); if (target != null) { rotateToTarget.target = target.transform; yield return(rotateToTarget.Rotate()); if (sightChecker.IsTargetOnSight(target)) { yield return(gun.Shoting()); } } yield return(null); } }