Exemplo n.º 1
0
    public IEnumerator Stage1()
    {
        // 스테이지 1 BGM 재생
        SoundManager.instance.PlayBGM(1);

        yield return(new WaitForSeconds(2.0f));

        #region Enemy Appear

        int[] enemyItem = new int[11] {
            3, 5, 2, 2, 0, 0, 0, 1, 0, 0, 0
        };
        float[] enemyHP = new float[6] {
            200.0f, 160.0f, 240.0f, 200.0f, 240.0f, 220.0f
        };
        Vector3 spawnPosition  = new Vector3(0.0f, 5.0f, 0.0f);
        Vector3 targetPosition = new Vector3(0.0f, 3.0f, 0.0f);

        GameObject boss = CreateBoss(spawnPosition, "ENEMY", LayerMask.NameToLayer("ENEMY_BODY"), new Vector3(1.5f, 1.5f, 1.0f),
                                     0.2f, 3, false, EnemyType.ENEMYTYPE_BOSS, enemyItem, 1, enemyHP);
        EnemyMove enemyMove = boss.GetComponent <EnemyMove>();
        EnemyFire enemyFire = boss.GetComponent <EnemyFire>();

        StartCoroutine(enemyMove.EnemyMoveOnce(targetPosition, iTween.EaseType.easeOutQuad, 1.0f));

        yield return(new WaitForSeconds(1.5f));

        enemyFire.EnemyBossAttack(GameData.currentStage, GameData.currentChapter);

        #endregion
    }
Exemplo n.º 2
0
    // 적 제거 함수
    public IEnumerator Destroy(bool isAutoDestroy, bool isBoss = false, bool isFinalChapter = false, bool isEnd = false)
    {
        // 아이템 드랍 (적이 자동으로 제거되지 않고 플레이어의 탄에 죽은 경우)
        if (isAutoDestroy.Equals(false))
        {
            // 효과음 재생
            SoundManager.instance.PlaySE(14);

            for (int i = 0; i < 11; i++)
            {
                if (enemyStatus.GetEnemyItem(i) > 0)
                {
                    ItemDrop(i, enemyStatus.GetEnemyItem(i));
                }
            }
        }

        // 적 종류에 따라 다른 로직 실행
        if (isBoss.Equals(false) || (isBoss.Equals(true) && isFinalChapter.Equals(true)))
        {
            // 충돌 판정 및 스프라이트 애니메이션 비활성화
            circleCollider2D.radius            = 0.5f;
            circleCollider2D.enabled           = false;
            animator.runtimeAnimatorController = null;

            // 적의 상태, 위치값 등의 정보 초기화
            InitEnemyState();

            // 비활성화
            gameObject.SetActive(false);

            // 다음 스테이지 실행
            if (isBoss.Equals(true) && isFinalChapter.Equals(true))
            {
                yield return(new WaitForSeconds(1.5f));

                gameManager.StageStart();
            }
        }
        else
        {
            Vector3 originPosition = new Vector3(0.0f, 3.0f, 0.0f);
            enemyStatus.SetInvincible(true);
            StartCoroutine(enemyMove.EnemyMoveOnce(originPosition, iTween.EaseType.easeInOutQuad, 1.0f));

            yield return(new WaitForSeconds(1.5f));

            enemyStatus.SetInvincible(false);
            enemyFire.EnemyBossAttack(GameData.currentStage, GameData.currentChapter);
        }

        // 게임 종료
        if (isEnd.Equals(true))
        {
            yield return(new WaitForSeconds(1.0f));

#if UNITY_EDITOR
            UnityEditor.EditorApplication.isPlaying = false;
#else
            Application.Quit()
#endif
        }
    }