// 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); } }
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); }