Ejemplo n.º 1
0
    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 --;
        }
    }
Ejemplo n.º 2
0
    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>();
    }