Пример #1
0
    /// <summary>
    /// 플레이어를 소환합니다.
    /// </summary>
    void FE_SpawnPlayer()
    {
        if (_stageManager is StageManager1P)
        {
            StageManager1P stageManager = (StageManager1P)_stageManager;

            // HUD를 활성화 합니다.
            stageManager.EnableHUD();

            // 플레이어 소환을 요청합니다.
            stageManager._player.transform.position = _stageManager._PlayerSpawnPosition.position;
            stageManager._player.RequestSpawn();
        }
        else if (_stageManager is StageManager2P)
        {
            StageManager2P stageManager = (StageManager2P)_stageManager;

            // HUD를 활성화 합니다.
            stageManager.EnableHUD();

            // 플레이어 소환을 요청합니다.
            Vector3 mainSpawnPos = stageManager._PlayerSpawnPosition.position;
            stageManager.MainPlayer.transform.position = mainSpawnPos;
            stageManager.MainPlayer.RequestSpawn();
            stageManager.SubPlayer.transform.position = new Vector3
                                                            (mainSpawnPos.x - 1, mainSpawnPos.y);
            stageManager.SubPlayer.RequestSpawn();
        }
        else
        {
            throw new Exception("알 수 없는 스테이지 관리자 형식");
        }
    }
Пример #2
0
 /// <summary>
 /// MonoBehaviour 개체를 초기화합니다.
 /// </summary>
 void Start()
 {
     // 필드를 초기화합니다.
     _stageManager = StageManager2P.Instance;
     _players      = _stageManager._players;
 }
    /// <summary>
    /// 문 개방 코루틴입니다.
    /// </summary>
    /// <returns>IEnumerator 반복자를 반환합니다.</returns>
    IEnumerator OpenCoroutine()
    {
        bool  openSoundPlayed = false;
        float deltaTime       = 0f;

        // 문 개방을 시작합니다.
        _audioSources[0].Play();
        Opened  = true;
        Opening = true;

        // 플레이어가 이동하기 위해 문을 여는 과정입니다.
        while (_animator.GetCurrentAnimatorStateInfo(0).IsName("BossRoomDoor_4Opened") == false)
        {
            deltaTime += Time.deltaTime;
            if (deltaTime > _openSoundPlayTime && openSoundPlayed == false)
            {
                _audioSources[1].Play();
                openSoundPlayed = true;
            }

            yield return(new WaitForSeconds(Time.deltaTime));
        }
        if (openSoundPlayed == false)
        {
            _audioSources[1].Play();
            openSoundPlayed = true;
        }

        // 플레이어가 이동을 마칠 때까지의 코드입니다.
        _player.RequestChangeMovingSpeed(_transitioningSpeed);
        if (_player.FacingRight)
        {
            _player.RequestMoveRight();
        }
        else
        {
            _player.RequestMoveLeft();
        }
        yield return(new WaitForSeconds(_transitioningTime));

        // 플레이어의 이동이 끝났습니다.
        if (_StageManager is StageManager2P)
        {
            StageManager2P stageManager = (StageManager2P)_StageManager;

            if (_player == stageManager.MainPlayer)
            {
                stageManager.SubPlayer.RequestSpawn(stageManager.MainPlayer.transform.position);
                Physics2D.IgnoreCollision(
                    stageManager.MainPlayer.GetComponent <Collider2D>(),
                    stageManager.SubPlayer.GetComponent <Collider2D>(),
                    true);
            }
            else if (_player == stageManager.SubPlayer)
            {
                // stageManager.MainPlayer.RequestSpawn(stageManager.SubPlayer.transform.position);
                print(_player);
            }
            else
            {
                print(_player);
            }
        }
        RequestClose();
        yield break;
    }
Пример #4
0
 /// <summary>
 /// MonoBehaviour 개체를 초기화합니다.
 /// </summary>
 void Start()
 {
     _stageManager         = StageManager2P.Instance; // _database.StageManager;
     _userInterfaceManager = _database.UIManager;
 }