destroyWithDelay() public method

public destroyWithDelay ( float delay ) : void
delay float
return void
Esempio n. 1
0
    void phase_control()
    {
        if (playerEntity.isAlive())
        {
            GameObject[]   enemies = GameObject.FindGameObjectsWithTag("Enemy");
            GameObject     enemy;
            AbstractEntity enemyEntity;
            if (phase == INITIAL_PHASE)
            {
                bool spidersCleared = true;
                for (int i = 0; i < enemies.Length; i++)
                {
                    enemy       = enemies[i];
                    enemyEntity = enemy.GetComponent <AbstractEntity>();
                    if (enemyEntity != null)
                    {
                        if (!enemyEntity.isAlive())
                        {
                            //enemy.GetComponent<SpiderState>().destroyWithDelay(1f);
                        }
                        else
                        {
                            spidersCleared = false;
                        }
                    }
                }
                if (spidersCleared)
                {
                    phase = TROLL_FIGHT;

                    for (int i = 0; i < enemies.Length; i++)
                    {
                        enemy       = enemies[i];
                        enemyEntity = enemy.GetComponent <AbstractEntity>();
                        if (enemyEntity != null)
                        {
                            if (!enemyEntity.isAlive())
                            {
                                enemy.GetComponent <SpiderState>().destroyObject();
                            }
                        }
                    }

                    Invoke("spawnSpiders", 2f);
                    Invoke("open_door", 2f);

                    if (trollSpawner != null)
                    {
                        Object     prefab = Resources.Load("troll", typeof(GameObject));
                        GameObject clone  = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject;
                        clone.transform.position = trollSpawner.position;
                        clone.GetComponent <NavMeshAgent> ().enabled = true;
                        clone.GetComponent <TrollAI> ().enabled      = true;
                    }
                }
            }
            else if (phase == TROLL_FIGHT)
            {
                SpiderState spiderstate;
                TrollState  trollstate;
                for (int i = 0; i < enemies.Length && phase == TROLL_FIGHT; i++)
                {
                    enemy       = enemies[i];
                    enemyEntity = enemy.GetComponent <AbstractEntity>();
                    if (enemyEntity != null)
                    {
                        if (!enemyEntity.isAlive())
                        {
                            spiderstate = enemy.GetComponent <SpiderState>();
                            trollstate  = enemy.GetComponent <TrollState>();
                            if (spiderstate != null)
                            {
                                spiderstate.destroyWithDelay(1.5f);
                                Invoke("spawnSpiders", 2f);
                            }
                            if (trollstate != null)
                            {
                                if (!trollstate.isAlive())
                                {
                                    phase = GAME_COMPLETE;
                                    GameObject player = GameObject.FindGameObjectWithTag("Player");
                                    Animator   a      = player.GetComponent <Animator>();
                                    a.SetBool("fanfare", true);
                                    Invoke("show_win_message", 3);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < enemies.Length; i++)
                {
                    enemy = enemies[i];
                    SpiderState spiderstate = enemy.GetComponent <SpiderState>();
                    if (spiderstate != null)
                    {
                        spiderstate.substractHealth(spiderstate.getHP());
                        spiderstate.destroyWithDelay(1f);
                    }
                }
            }
        }
        else if (phase != GAME_OVER)
        {
            phase = GAME_OVER;
        }
    }