コード例 #1
0
    private IEnumerator Patrol()
    {
        YieldInstruction endOfFrame = new WaitForEndOfFrame();

        while (true)
        {
            if (!enemy.gamePaused && !enemy.gameEnded)
            {
                enemy.navMeshAgent.SetDestination(PatrolPointsController.GetPointFor(enemy.number, currentPatrolPoint).position);
                while (enemy.navMeshAgent.pathPending)
                {
                    yield return(endOfFrame);
                }
                while (Vector3.Distance(enemy.navMeshAgent.transform.position, PatrolPointsController.GetPointFor(enemy.number, currentPatrolPoint).position) > 0.5f)
                {
//					Debug.Log (Vector3.Distance (enemy.navMeshAgent.transform.position, PatrolPointsController.GetPointFor (enemy.number, currentPatrolPoint).position));
                    if (!enemy.gamePaused && !enemy.gameEnded)
                    {
                        yield return(endOfFrame);
                    }
                    else
                    {
                        enemy.navMeshAgent.ResetPath();
                        enemy.navMeshAgent.velocity = Vector3.zero;
                        break;
                    }
                }
                if (enemy.gamePaused && !enemy.gameEnded)
                {
                    continue;
                }
                else
                {
                    currentPatrolPoint = (currentPatrolPoint + 1) % PatrolPointsController.GetNumPointsFor(enemy.number);
                }
            }
            else
            {
                enemy.navMeshAgent.ResetPath();
                enemy.navMeshAgent.velocity = Vector3.zero;
                yield return(endOfFrame);
            }
        }
    }
コード例 #2
0
 void Awake()
 {
     _instance = this;
 }