Example #1
0
 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);
     }
 }
Example #2
0
    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);
        }
    }
Example #3
0
    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);
        }
    }