void FixedUpdate() { attackDamage = 1.5f + humanSpawnPoint.GetComponent<HumanSpawnPoint>().currentTier * 0.1f; if(health <= 0) { HumanSpawnPoint spawnPointComponent = humanSpawnPoint.GetComponent<HumanSpawnPoint>(); for(int i = 0; i < spawnPointComponent.humans.Count; i++) { if(spawnPointComponent.humans[i].CompareTag("HumanHero") && spawnPointComponent.humans[i].GetComponent<HumanHero>().target == gameObject) { spawnPointComponent.humans[i].GetComponent<HumanHero>().target = null; spawnPointComponent.humans[i].GetComponent<HumanHero>().pathfind.seeker.StartPath(spawnPointComponent.humans[i].transform.position, spawnPointComponent.monsterCore.gameObject.transform.position, spawnPointComponent.humans[i].GetComponent<HumanHero>().pathfind.OnPathComplete); }else if(spawnPointComponent.humans[i].CompareTag("HumanUnit") && spawnPointComponent.humans[i].GetComponent<HumanUnit>().target == gameObject) { spawnPointComponent.humans[i].GetComponent<HumanUnit>().target = null; spawnPointComponent.humans[i].GetComponent<HumanUnit>().pathfind.seeker.StartPath(spawnPointComponent.humans[i].transform.position, spawnPointComponent.monsterCore.gameObject.transform.position, spawnPointComponent.humans[i].GetComponent<HumanUnit>().pathfind.OnPathComplete); } } armyScript.armyList.Remove (gameObject); Destroy(gameObject); } nearbyPawns = new List<GameObject>(); List<Collider2D> test = Physics2D.OverlapCircleAll(transform.position, 2.0f).ToList(); for(int i = 0; i < test.Count; i++) { if(test[i].gameObject.CompareTag("HumanUnit") && !nearbyPawns.Contains(test[i].gameObject)) { nearbyPawns.Add(test[i].gameObject); } else if(test[i].gameObject.CompareTag("HumanHero") && !nearbyPawns.Contains(test[i].gameObject)) { nearbyPawns.Add(test[i].gameObject); } } if(nearbyPawns.Count > 0 && target == null) { target = nearbyPawns[0]; state = Army.MinionState.Attacking; pathfind.path = null; } if(target != null && state == Army.MinionState.Attacking && attackCooldown <= 0) { if(target.CompareTag("HumanUnit")) { target.GetComponent<HumanUnit>().health -= attackDamage; attackCooldown = 50; }else if(target.CompareTag("HumanHero")) { target.GetComponent<HumanHero>().health -= attackDamage; attackCooldown = 50; } } if(attackCooldown > 0) { attackCooldown --; } }
void Start() { state = Army.MinionState.Rallying; pathfind.seeker.StartPath(transform.position, messHall.transform.position, pathfind.OnPathComplete); humanSpawnPoint = GameObject.Find("HumanSpawnPoint"); armyScript = humanSpawnPoint.GetComponent<HumanSpawnPoint>().monsterCore.GetComponent<MonsterCore>().armyScript; nearbyPawns = new List<GameObject>(); }