コード例 #1
0
 // Start is called before the first frame update
 void Start()
 {
     pawn   = GetComponentInChildren <EnemyPawn>();
     target = GameObject.FindGameObjectWithTag("Player").transform;
     agent  = pawn.GetComponent <NavMeshAgent>();
     GameManager.instance.enemies.Add(this.gameObject);
     if (pawn.stats.weaponEquipped == null)
     {
         //Add the weapons in the scene to the list
         allWeaponsInWorld = FindObjectsOfType <Weapon>();
         //Cycle through all weapons in the scene
         //foreach(Weapon obj in allWeaponsInWorld)
         //{
         //    //If we are close to the weapon it becomes the target to chase
         //    if (Vector3.Distance(pawn.transform.position, obj.transform.position) <= 10)
         //        target = obj.transform;
         //    //Chase the weapon
         //    pawn.ChangeMoveStateTo(EnemyPawn.AIMoveState.Chase);
         //}
     }
     else
     {
         pawn.stats.weaponEquipped.owner = pawn;
         //Chase the player instead
         target = GameObject.FindGameObjectWithTag("Player").transform;
         pawn.ChangeMoveStateTo(EnemyPawn.AIMoveState.Idle);
     }
 }
コード例 #2
0
ファイル: EnemyHandler.cs プロジェクト: exuczen/PawnChaser
    public void AddPawnToLists(List <EnemyPawn> enemyPawns, bool sortEnemyPawns)
    {
        _enemyPawns.Clear();
        _enemyPairs.Clear();
        _enemySingles.Clear();
        List <EnemyPawn> enemyPawnsWithPawnTargets = new List <EnemyPawn>(); //_enemyPawns.FindAll(pawn => pawn.TargetIsOtherPawn);

        foreach (var pawn in enemyPawns)
        {
            if (pawn.TargetIsOtherPawn)
            {
                enemyPawnsWithPawnTargets.Add(pawn);
            }
            else
            {
                _enemySingles.Add(pawn);
            }
        }

        //Debug.Log(GetType() + "." + enemyPawnsWithPawnTargets.Count);
        for (int i = 0; i < enemyPawnsWithPawnTargets.Count; i++)
        {
            EnemyPawn pawnI = enemyPawnsWithPawnTargets[i];
            for (int j = i + 1; j < enemyPawnsWithPawnTargets.Count; j++)
            {
                EnemyPawn pawnJ = enemyPawnsWithPawnTargets[j];
                if (pawnI.Target == pawnJ.GetComponent <EnemyPawnTarget>() &&
                    pawnJ.Target == pawnI.GetComponent <EnemyPawnTarget>())
                {
                    _enemyPairs.Add(new EnemyPawnsPair(pawnI, pawnJ));
                }
            }
        }
        if (sortEnemyPawns)
        {
            //_enemyPawns.Sort((pawnA, pawnB) => {
            //    bool pawnATargetIsOtherPawn = pawnA.TargetIsOtherPawn;
            //    bool pawnBTargetIsOtherPawn = pawnB.TargetIsOtherPawn;
            //    if (pawnATargetIsOtherPawn == pawnBTargetIsOtherPawn)
            //        return 0;
            //    else if (pawnATargetIsOtherPawn && !pawnBTargetIsOtherPawn)
            //        return 1;
            //    else if (pawnBTargetIsOtherPawn && !pawnATargetIsOtherPawn)
            //        return -1;
            //    else
            //        return 0;
            //});
            enemyPawns.Clear();
            enemyPawns.AddRange(_enemySingles);
            enemyPawns.AddRange(enemyPawnsWithPawnTargets);
        }
        _enemyPawns.AddRange(enemyPawns);
    }