/// <summary> /// /// </summary> void Update() { if (_loading) { if (_fader.FadeOutEnded) { LoadingSceneManager.LoadLevel(_nextLevelName); } return; } if (Input.anyKeyDown) { if (Input.GetButton("Attack")) { Load(); return; } else if (Input.GetButton("Jump")) { return; } else if (Input.GetButton("Dash")) { Load("Title"); return; } if (Input.GetKey(KeyCode.UpArrow)) { ChangeItem(-1, 0); } else if (Input.GetKey(KeyCode.DownArrow)) { ChangeItem(1, 0); } else if (Input.GetKey(KeyCode.LeftArrow)) { ChangeItem(0, -1); } else if (Input.GetKey(KeyCode.RightArrow)) { ChangeItem(0, 1); } } foreach (GameObject stagePoint in _stagePoints) { Debug.DrawRay(_earth.transform.position, stagePoint.transform.position); } }
/// <summary> /// 프레임이 갱신될 때 MonoBehaviour 개체 정보를 업데이트 합니다. /// </summary> protected override void Update() { /// Handy: 하는 일이 없어서 삭제해도 될 것 같습니다. /// base.Update(); if (_gameEnded) { if (_fader.FadeOutEnded) { LoadingSceneManager.LoadLevel("CS03_GaiaFound"); } return; } // 페이드 인 효과가 종료되는 시점에 if (_fader.FadeInEnded) { // 준비 애니메이션 재생을 시작합니다. PlayReadyAnimation(); } // 특수 키 입력에 대한 처리입니다. if (Input.GetKeyDown(KeyCode.Q)) { // 플레이 속도를 바꿉니다. _timeManager.TimeScale = _timeManager.TimeScale == test ? 1 : test; } else if (Input.GetKeyDown(KeyCode.W)) { // 플레이어에게 대미지를 입힙니다. HurtPlayer(); } else if (Input.GetKeyDown(KeyCode.R)) { // 플레이어의 체력을 모두 회복합니다. HealPlayer(); } // if (Input.GetKeyDown(KeyCode.Return)) { _userInterfaceManager.RequestPauseToggle(); } }
// Update is called once per frame void Update() { if (fadeOutRequested) { if (fader.FadeOutEnded) { LoadingSceneManager.LoadLevel(loadingLevelName); } return; } // 캐릭터를 불러옵니다. if (loadEnd == false) { if (rbodyX.velocity.x < 0.5f) { rbodyX.velocity = new Vector2(0, 0); rbodyZ.velocity = new Vector2(0, 0); loadEnd = true; } else { // rbodyX.velocity = new Vector2(rbodyX.velocity.x - 1.5f, 0); // rbodyZ.velocity = new Vector2(rbodyZ.velocity.x + 1.5f, 0); } } // 캐릭터를 선택합니다. if (Input.GetKeyDown(KeyCode.LeftArrow)) { spriteX.sortingOrder = 2; spriteZ.sortingOrder = 0; backSpriteX.enabled = true; backSpriteZ.enabled = false; audioSources[0].Play(); } else if (Input.GetKeyDown(KeyCode.RightArrow)) { spriteX.sortingOrder = 0; spriteZ.sortingOrder = 2; backSpriteX.enabled = false; backSpriteZ.enabled = true; audioSources[0].Play(); } // 결정 키가 눌린 경우입니다. else if (Input.GetKeyDown(KeyCode.Return)) { // 엑스 선택 if (backSpriteX.enabled) { loadingLevelName = "X_introCutscene"; } // 제로 선택 else { loadingLevelName = "Z_introCutscene"; } audioSources[1].Play(); fader.FadeOut(); // fader.RequestSceneEnd(); fadeOutRequested = true; } }
/// <summary> /// 스크립트에 따라 액션을 수행하는 코루틴입니다. /// </summary> /// <returns>DoNextScript() 함수 호출의 결과입니다.</returns> IEnumerator ActWithCoroutine() { string[] action = _actionScriptList[_actionScriptIndex++]; string command = action[0]; int index; float _time; float fadeSpeed; string levelName; Vector2 position; // 명령에 따라 액션을 수행합니다. switch (command) { // 일정 시간동안 대기합니다. case "WaitForSeconds": _time = float.Parse(action[1]); yield return(new WaitForSeconds(_time)); break; // 레벨을 불러옵니다. case "Load": levelName = action[1]; LoadingSceneManager.LoadLevel(levelName); break; // 이미지를 슬라이드합니다. case "SlideImage": index = int.Parse(action[1]); _time = float.Parse(action[2]); position = new Vector2(float.Parse(action[3]), float.Parse(action[4])); { SpriteRenderer image = _cutsceneImages[index]; Rigidbody2D image_rbody = image.GetComponent <Rigidbody2D>(); Vector2 diff = position - new Vector2(image.transform.position.x, image.transform.position.y); image_rbody.velocity = diff / _time; yield return(new WaitForSeconds(_time)); image_rbody.velocity = Vector2.zero; } break; // 이미지를 화면에 표시합니다. case "EnableImage": index = int.Parse(action[1]); _cutsceneImages[index].enabled = true; break; // 화면에 표시한 이미지를 disable합니다. case "DisableImage": index = int.Parse(action[1]); _cutsceneImages[index].enabled = false; break; // 장면에 페이드인 효과를 부여합니다. case "SceneFadeIn": fadeSpeed = float.Parse(action[1]); _fader.FadeIn(fadeSpeed); break; // 장면에 페이드아웃 효과를 부여합니다. case "SceneFadeOut": fadeSpeed = float.Parse(action[1]); _fader.FadeOut(fadeSpeed); break; // 배경 음악을 재생합니다. case "PlayMusic": index = int.Parse(action[1]); if (action.Length > 2) { _bgmSource.volume = float.Parse(action[2]); } else { _bgmSource.volume = 1; } _bgmSource.clip = _audioSources[index].clip; _bgmSource.Play(); break; // 음악 재생을 중지합니다. case "StopMusic": _bgmSource.Stop(); break; // 효과음을 재생합니다. case "PlaySound": index = int.Parse(action[1]); _time = float.Parse(action[2]); _audioSources[index].Play(); yield return(new WaitForSeconds(_time)); break; // case "FadeOutMusic": while (_bgmSource.volume > 0) { _bgmSource.volume -= Time.deltaTime; yield return(new WaitForSeconds(0.5f)); } break; } // 액션 수행이 모두 종료되었으므로 스위치를 닫습니다. _actionScriptPlaying = false; /** * // CHECK: 문제가 발생할 때 이 부분을 먼저 확인하세요. * // 원래는 이런 구문이 없었습니다. * { * StopCoroutine(_actionScriptCoroutine); * _actionScriptCoroutine = null; * } */ // 다음 스크립트를 수행합니다. DoNextScript(); }
/// <summary> /// 메인 메뉴로 복귀합니다. /// </summary> public void BackToMainMenu() { LoadingSceneManager.LoadLevel("Title"); }
/// <summary> /// 프레임이 갱신될 때 MonoBehaviour 개체 정보를 업데이트 합니다. /// </summary> void Update() { // 장면 전환 요청을 확인한 경우의 처리입니다. if (_changeSceneRequested) { if (fader.FadeOutEnded) { LoadingSceneManager.LoadLevel(_nextLevelName); } return; } // 키 입력에 대한 처리입니다. if (HDInput.IsAnyKeyDown()) { if (Input.anyKeyDown) { if (HDInput.IsUpKeyDown()) // (HDInput.IsUpKeyPressed()) // (Input.GetKeyDown(KeyCode.UpArrow)) { if (0 < _menuIndex) { ChangeMenuItem(_menuIndex - 1); } } else if (HDInput.IsDownKeyDown()) // (HDInput.IsDownKeyPressed()) // (Input.GetKeyDown(KeyCode.DownArrow)) { if (_menuIndex < menuItems.Length - 1) { ChangeMenuItem(_menuIndex + 1); } } else if (IsSelectKeyPressed()) { switch (_menuIndex) { case 0: _nextLevelName = "CS00_PreviousStory"; _changeSceneRequested = true; fader.FadeOut(1); break; case 1: _nextLevelName = "01_Intro_X"; _changeSceneRequested = true; fader.FadeOut(1); break; case 2: _nextLevelName = "01_Intro_Z"; _changeSceneRequested = true; fader.FadeOut(1); break; case 3: _nextLevelName = "01_Intro_2p"; _changeSceneRequested = true; fader.FadeOut(1); break; case 4: Application.Quit(); break; default: _nextLevelName = null; break; } _seSources[1].Play(); } } else { if (HDInput.IsUpKeyPressed()) // (Input.GetKeyDown(KeyCode.UpArrow)) { if (0 < _menuIndex) { ChangeMenuItem(_menuIndex - 1); } } else if (HDInput.IsDownKeyPressed()) // (Input.GetKeyDown(KeyCode.DownArrow)) { if (_menuIndex < menuItems.Length - 1) { ChangeMenuItem(_menuIndex + 1); } } else if (IsSelectKeyPressed()) { switch (_menuIndex) { case 0: _nextLevelName = "CS00_PreviousStory"; _changeSceneRequested = true; fader.FadeOut(1); break; case 1: _nextLevelName = "01_Intro_X"; _changeSceneRequested = true; fader.FadeOut(1); break; case 2: _nextLevelName = "01_Intro_Z"; _changeSceneRequested = true; fader.FadeOut(1); break; case 3: _nextLevelName = "01_Intro_2p"; _changeSceneRequested = true; fader.FadeOut(1); break; case 4: Application.Quit(); break; default: _nextLevelName = null; break; } _seSources[1].Play(); } } } }
/// <summary> /// 프레임이 갱신될 때 MonoBehaviour 개체 정보를 업데이트 합니다. /// </summary> void Update() { // 게임 데이터를 불러오는 중이라면 로딩만 수행합니다. if (_loading) { if (_fader.FadeOutEnded) { LoadingSceneManager.LoadLevel("StageSelect"); } return; } // 아무 키나 눌린 경우 if (Input.anyKeyDown) { // 테스트 함수를 호출합니다. { if (Input.GetKeyDown(KeyCode.A)) { AddSaveData(_saveDataIndex); return; } else if (Input.GetKeyDown(KeyCode.D)) { DeleteSaveData(_saveDataIndex); return; } else if (Input.GetKeyDown(KeyCode.S)) { PreserveSaveData(); return; } else if (Input.GetKeyDown(KeyCode.F)) { DeletePlayerPrefsSaveData(); return; } } // if (Input.GetButtonDown("Attack")) { Load(); return; } else if (Input.GetButtonDown("Jump")) { return; } else if (Input.GetButtonDown("Dash")) { LoadingSceneManager.LoadLevel("Title"); return; } // if (Input.GetKeyDown(KeyCode.UpArrow)) { ChangeSaveItem(_saveDataIndex - 1); } else if (Input.GetKeyDown(KeyCode.DownArrow)) { ChangeSaveItem(_saveDataIndex + 1); } } }