private IEnumerator KaTalk() { yield return(null); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "갑자기 학교 전기가 나갔다. 전기는 학생식당에서 복구시킬 수 있는듯 하다.", 2f); yield return(new WaitForSeconds(2.2f)); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "갑자기 강당에서 요란한 소리가 난다.", 1.5f); yield return(new WaitForSeconds(1.6f)); sceneEventSystem.DirectMode(); sceneEventSystem.Player.GetComponent <PlayerInput>().enabled = true; }
// Use 아이템의 기능을 모두 담아둠. 사용방법은 ItemUiEvent 클래스에서 지정해두었음. 동적으로 이 스크립트로 연결해 아이템 이름과 매칭해 해당 기능을 작동. public void UseItem(string itemName) { switch (itemName) { case "remoteController": RemoteControllerEvent(); break; case "Lighter": if (sceneEventSystem.Player.transform.GetChild(2).GetComponent <Light>().range != 30f) { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "라이터를 사용했다.", 1.5f); sceneEventSystem.Player.transform.GetChild(2).GetComponent <Light>().range = 30f; sceneEventSystem.Player.transform.GetChild(3).GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0.8f); itemInfoWindow.SetActive(false); inventoryWindow.SetActive(false); } break; //View아이템인 경우 case "BloodedNote": case "FoldedPaper": case "Hwang'sMemo": case "WetNote": case "SodiumPostIt": viewWindow.gameObject.SetActive(true); viewWindow.overrideSprite = ResourceManager.Instance.GetItemIcon(itemName); break; } }
IEnumerator StudentOffice_() { sceneEventSystem.TouchCanvas.SetActive(false); sceneEventSystem.SpeechBubbles(student, "살려주세요! 안에 저 있어요!", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.SpeechBubbles(student, "선생님이에요? 구해주세요!", 1.5f); yield return(new WaitForSeconds(2f)); schoolMessenger.SetActive(true); yield return(new WaitForSeconds(4)); schoolMessenger.SetActive(false); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "지금 당장 문을 열 수는 없을 것 같다...", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "그래, 선생님이야!", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "지금 당장은 열리지 않지만, 금방 구하러 올게!", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.SpeechBubbles(student, "네... 꼭 다시 구하러 와줘야 해요!", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.TouchCanvas.SetActive(true); isInteracted = true; }
public void TryUnlock() { string inputCipher = String.Empty; foreach (Text item in cipherText) { inputCipher = string.Concat(inputCipher, item.text); } if (inputCipher == cipher) { StartCoroutine(OpenMessage()); OpenSuccess(); } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "열리지 않는다.", 1.5f); } Time.timeScale = 1; lockWindow.SetActive(false); }
public void BehaviorByInteraction(GameObject player) { if (IsZombieIn) { StartCoroutine(BookshelfFalling()); } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "서가가 불안하게 서 있다. 살짝 밀면 넘어갈 것 같다.", 1.5f); IsInteractWithBookshelf = true; } }
public void BehaviorByInteraction(GameObject player) { if (!sceneEventSystem.IsBlackouted) { // 정전 중이 아니라면, sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "알코올 램프가 있다. 불을 붙이면 큰 화재가 날 것만 같다.", 3); } else { if (sceneEventSystem.Player.GetComponent <Inventory>().IsItemExist("Lighter")) { // 정전 중이라면, sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "알코올 램프에 라이터로 불을 붙였다. 화재가 발생해 스프링 쿨러가 작동했다.", 3); StartCoroutine(OnFire()); } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "불을 붙일 무언가가 필요하다.", 3); } } }
private IEnumerator PlayerMonitoring() { while (true) { yield return(null); if (player.GetComponent <PlayerProperty>().StandingSection.name == "3FHallway") { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "아이를 구해야한다.", 1.5f); StartCoroutine(BackStep()); } } }
IEnumerator MusicRoomEvent_() { sceneEventSystem.DirectMode(); Camera.main.GetComponent <CameraMove>().SetTarget(musicRoomZombies[0].transform.position); yield return(new WaitForSeconds(3f)); Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player); sceneEventSystem.DirectMode(); yield return(new WaitUntil(() => musicRoomStorageDoor.IsUnlocked)); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "빠루 끝을 문 사이에 넣고 힘을 줘서 문을 뜯어냈다.", 2); yield return(new WaitForSeconds(2f)); SoundGenerator.SpreadSound(new Sound(9999, 350), musicRoomStorageDoor.transform.position); // 음악실 문을 따고 소음 발생 }
private IEnumerator TalkWithKid() { gameObject.layer = 0; sceneEventSystem.DirectMode(); yield return(new WaitForSeconds(0.5f)); switch (interNum) { case 0: sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "천장이 내려앉았다. 찌그러진 문은 온 힘을 다해 당겨도 미동조차 않는다.", 1.5f); yield return(wait); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문 아래에는 빗물이 잔뜩 고여 있다.", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "밖에 누구 있어요?", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "살려주세요", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "저 교실에 갇혔어요!!", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "안에 누구 있니?", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "선생님??! 살려주세요!! 교실에 숨어있는데 갑자기 천장이 무너졌어요!!", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "안에서 열 방법이 없니?", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "꿈쩍도 안 해요.. 제발 구해주세요!!", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "알았다. 선생님이 구할 방법을 꼭 찾을게. 조금만 기다리렴.", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "네… 꼭 구해주셔야 해요. 너무 무서워요..", 1.5f); yield return(wait); sceneEventSystem.IsInteractedThirdFloorCollabsedClass = true; interNum++; break; case 1: if (inventory.IsItemExist("Sodium")) { sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "선생님 목소리 들리니? 선생님이 곧 이 문을 터트릴 거야. 위험할 수 있으니 교탁 밑으로 숨어있거라.", 1.5f); yield return(wait); sceneEventSystem.SpeechBubbles(kid, "네.. 알겠어요!!", 1.5f); yield return(wait); interNum++; break; } sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "힘으로는 절대로 열 수 없다. 다른 방법이 필요하다.", 1.5f); yield return(wait); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문을 날려버릴… 폭탄.. 같은 게 어디 없을까?", 1.5f); yield return(wait); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "문 아래에는 빗물이 잔뜩 고여 있다.", 1.5f); yield return(wait); break; case 2: sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "소듐이 들어있는 봉투를 찢은 뒤, 묵직한 금속 덩어리를 웅덩이에 던져 넣었다.", 1.5f); yield return(wait); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "잠깐.. 나도 도망쳐야", 1.5f); yield return(wait); yield return(StartCoroutine(Boom())); interNum++; break; default: break; } sceneEventSystem.DirectMode(); yield return(new WaitForSeconds(0.5f)); gameObject.layer = 8; }
public void BehaviorByInteraction(GameObject player) { sceneEventSystem.MonologueBubbles(player, "배전반에서 누전이 일어나고 있다. 가까이 다가가는 건 위험하다.", 1.5f); }
private IEnumerator InteractCabinet(GameObject player) { gameObject.layer = 0; switch (behaviorCount) { case 0: sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "나무 상자가 보인다. 영어로 뭐라 쓰여 있다. Sodium..?", 1.5f); yield return(wait); behaviorCount++; break; case 1: if (inven.IsItemExist("Crowbar")) { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "빠루를 고쳐 잡고, 힘을 주어 유리를 내려쳤다.", 1.5f); yield return(wait); sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "캐비닛 유리는 큰 소리와 함께 깨졌다.", 1.5f); yield return(wait); behaviorCount++; } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "유리를 깨트리기 위해선 도구가 있어야할 것 같다.", 1.5f); yield return(wait); } break; case 2: sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "소듐이라 쓰인 상자에 포스트잇이 붙어 있다.", 1.5f); yield return(wait); player.SendMessage("AddItem", sodiumPostIt); sceneEventSystem.PushSystemMessage("포스트잇을 얻었다.", 1); yield return(wait); behaviorCount++; break; case 3: if (sceneEventSystem.IsInteractedThirdFloorCollabsedClass) { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "어쩌면 이걸로 3층 교실의 문을 폭파할 수 있을지도…", 1.5f); yield return(wait); player.SendMessage("AddItem", sodium); sceneEventSystem.PushSystemMessage("실험용 소듐 덩어리를 얻었다.", 1); yield return(wait); gameObject.layer = 0; behaviorCount++; sceneEventSystem.IsInteractedThirdFloorCollabsedClass = false; yield return(null); } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "물에 닿으면 폭발한다니.. 건드리지 않는게 좋겠다.", 1.5f); yield return(wait); } break; default: break; } gameObject.layer = 8; }
private IEnumerator Talk() { switch (interactionNum) { case 0: gameObject.layer = 0; sceneEventSystem.DirectMode(); Camera.main.GetComponent <CameraMove>().SetTarget(gameObject); yield return(new WaitForSeconds(0.5f)); sceneEventSystem.SpeechBubbles(gameObject, "…?!", 2); yield return(new WaitForSeconds(2.0f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "쉿. 괜찮아. 선생님이 구하러 왔어.", 2); yield return(new WaitForSeconds(2.0f)); sceneEventSystem.SpeechBubbles(gameObject, "선생님… 저기에…", 2); yield return(new WaitForSeconds(2.0f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "응, 선생님도 봤어. 조금만 기다려. 금방 구해줄게.", 2); GameObject.Find("UnstableBookshelf").gameObject.layer = 8; Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player); sceneEventSystem.DirectMode(); interactionNum++; gameObject.layer = 8; break; case 1: if (GameObject.Find("UnstableBookshelf").GetComponent <UnstableBook>().IsInteractWithBookshelf) { gameObject.layer = 0; sceneEventSystem.DirectMode(); Camera.main.GetComponent <CameraMove>().SetTarget(gameObject); yield return(new WaitForSeconds(0.5f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "☆☆아, 선생님이 좋은 생각이 떠올랐어.\n내가 신호를 주면 소리를 질러 저 좀비를 유인할 수 있겠니 ?", 3); yield return(new WaitForSeconds(3.0f)); sceneEventSystem.SpeechBubbles(gameObject, "…네?", 1.5f); yield return(new WaitForSeconds(1.5f)); sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "무서울 거라는 거 알아. 그래도 선생님을 한번 믿어봐.\n반드시 구해줄게.", 2); yield return(new WaitForSeconds(2)); sceneEventSystem.SpeechBubbles(gameObject, "…네. 알겠어요.", 1.5f); yield return(new WaitForSeconds(1.5f)); GameObject.Find("3F").GetComponent <ThirdFloor>().ActiveSignalButton(); Camera.main.GetComponent <CameraMove>().SetTarget(sceneEventSystem.Player); sceneEventSystem.DirectMode(); interactionNum++; gameObject.layer = 8; } else { sceneEventSystem.MonologueBubbles(sceneEventSystem.Player, "방법을 찾아보자.", 1.5f); } break; case 2: if (IsZombieDead) { sceneEventSystem.SpeechBubbles(sceneEventSystem.Player, "잘 했어. 이제 나가자.", 2); sceneEventSystem.SaveStudent(sceneEventSystem.Player.GetComponent <PlayerInput>()); GameObject.Find("3F").GetComponent <ThirdFloor>().StopMonitoring(); sceneEventSystem.ToBeSavedKid = name; sceneEventSystem.Player.GetComponent <PlayerProperty>().IsWithchild = true; sceneEventSystem.SaveStudent(sceneEventSystem.Player.GetComponent <PlayerInput>()); Destroy(gameObject); } break; default: break; } }