/// <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("알 수 없는 스테이지 관리자 형식"); } }
/// <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; }
/// <summary> /// MonoBehaviour 개체를 초기화합니다. /// </summary> void Start() { _stageManager = StageManager2P.Instance; // _database.StageManager; _userInterfaceManager = _database.UIManager; }