示例#1
0
    public void OnStageStart()
    {
        // 적 전부를 삭제.
        GameObject[] enemys = GameObject.FindGameObjectsWithTag("Enemy");
        for (int i = 0; i < enemys.Length; i++)
        {
            Destroy(enemys[i]);
        }

        // 그 외 오브젝트 삭제.
        TreasureGenerator treasureGenInst = FindObjectOfType(typeof(TreasureGenerator)) as TreasureGenerator;

        if (treasureGenInst != null)
        {
            Destroy(treasureGenInst.gameObject);
        }

        GameObject.Find("Map").SendMessage("OnStageStart");

        if (!DISABLE_MONSTER_SPAWN)
        {
            // 적 스폰.
            for (int i = 1; i < 5; i++)
            {
                Vector3 pos = m_map.GetSpawnPoint(i);

                if (pos == Vector3.zero)
                {
                    // 이 타입의 적은 만들지 않는다.
                    continue;
                }

                GameObject  e  = (GameObject)Instantiate(m_enemyPrefab, pos, Quaternion.identity);
                MonsterCtrl mc = e.GetComponent <MonsterCtrl>();
                mc.m_aiType = (MonsterCtrl.AI_TYPE)((int)MonsterCtrl.AI_TYPE.TRACER + i - 1);
                mc.SetSpawnPosition(m_map.GetSpawnPoint(Map.SPAWN_POINT_TYPE.BLOCK_SPAWN_POINT_PLAYER + i));
                mc.SetDifficulty(m_stageNo);

                mc.SendMessage("OnStageStart");
            }
        }

        // 스테이지 번호 갱신.
        Hud.get().SetStageNumber(m_stageNo);

        // 보물 스폰.
        Vector3 trasurePos = m_map.GetSpawnPoint(Map.SPAWN_POINT_TYPE.BLOCK_SPAWN_TREASURE);

        if (trasurePos != Vector3.zero)
        {
            Instantiate(m_treasureGen, trasurePos, Quaternion.identity);
        }

        Hud.get().DrawStageClear(false);
        GameObject.Find("Player").SendMessage("OnStageStart");
        Hud.get().DrawStageStart(true);
        HitStop(true);

        // BGM 재생.
        m_audio.StopAll();
        m_audio.PlayLoop(m_bgmClip, 1.0f, 0.0f);

        StartCoroutine("StageStartWait");
    }