void Update() { if (GetComponent <ObjectEventManager>().doCancel) //선택 취소 { GetComponent <ObjectEventManager>().doCancel = false; marker.GetComponent <SpriteRenderer>().enabled = false; } if (GetComponent <ObjectEventManager>().doEvent) //클릭 이벤트 발생 { ObjectEventManager.CancelAllSelectWithOutObject(transform.parent.gameObject); //다른 오브젝트 선택 해제 Camera.main.GetComponent <EventListener>().ResetSelectPlayer(); //플레이어 선택 해제 GetComponent <ObjectEventManager>().doEvent = false; //Marker 활성화/비활성화 marker.GetComponent <SpriteRenderer>().enabled = !marker.GetComponent <SpriteRenderer>().enabled; if (marker.GetComponent <SpriteRenderer>().enabled) { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.DISHING); //Marker 활성화 시 주방의 UI를 Dishing으로 전환 } else { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); //Marker 비활성화 시 주방의 UI를 초기화 } } }
void Update() { if (GetComponent <ObjectEventManager>().doCancel) //선택 취소 { GetComponent <ObjectEventManager>().doCancel = false; marker.GetComponent <SpriteRenderer>().enabled = false; IngredientUI.ResetActiveAllExprirationDate(); //재료 유통기한 표시 비활성화 } if (GetComponent <ObjectEventManager>().doEvent) //클릭 이벤트 발생 { ObjectEventManager.CancelAllSelectWithOutObject(transform.parent.gameObject); //다른 오브젝트 선택 해제 Camera.main.GetComponent <EventListener>().ResetSelectPlayer(); //플레이어 선택 해제 GetComponent <ObjectEventManager>().doEvent = false; //Marker 활성화/비활성화 marker.GetComponent <SpriteRenderer>().enabled = !marker.GetComponent <SpriteRenderer>().enabled; IngredientUI.ResetActiveAllExprirationDate(); //재료 유통기한 표시 비활성화 //Marker 활성화 시 UI도 활성화 if (marker.GetComponent <SpriteRenderer>().enabled) { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.STORAGE); //Marker 활성화 시 주방의 UI를 Cook로 전환 GetComponentInParent <Storage>().ChangeViewRefrPages(transform.parent.gameObject); } //Marker 비활성화 시 UI도 비활성화 else { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); //Marker 비활성화 시 주방의 UI를 초기화 } } }
public static void CancelAllSelectObject() //모든 오브젝트의 선택 해제 { GameObject[] objects = GameObject.FindGameObjectsWithTag("Object"); ObjectEventManager eventManager = null; for (int i = 0; i < objects.Length; i++) { eventManager = objects[i].GetComponentInChildren <ObjectEventManager>(); if (eventManager != null) { eventManager.CancelSelectObject(); } } GameObject.Find("KitchenUI").GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); }
void Update() { if (GetComponent <ObjectEventManager>().doCancel) //선택 취소 { GetComponent <ObjectEventManager>().doCancel = false; marker.GetComponent <SpriteRenderer>().enabled = false; } if (GetComponent <ObjectEventManager>().doEvent) //클릭 이벤트 발생 { ObjectEventManager.CancelAllSelectWithOutObject(transform.parent.gameObject); //다른 오브젝트 선택 해제 Camera.main.GetComponent <EventListener>().ResetSelectPlayer(); //플레이어 선택 해제 GetComponent <ObjectEventManager>().doEvent = false; //Marker 활성화/비활성화 marker.GetComponent <SpriteRenderer>().enabled = !marker.GetComponent <SpriteRenderer>().enabled; if (marker.GetComponent <SpriteRenderer>().enabled) { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.COOK); //Marker 활성화 시 주방의 UI를 Cook로 전환 } else { kitchenUI.GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); //Marker 비활성화 시 주방의 UI를 초기화 } } if (targetPlayer != null) { if (doWorkEvent) //작업 이벤트 발생 { doWorkEvent = false; doCook = true; accessGround = GetAccessGround(); targetPlayer.GetComponent <MyCharacterMove>().MoveThisGround(accessGround); } if (doCook && menu != null) { ProcessingWorkEvent(); } else if (endCook) { endCook = false; CompleteCookMenu(); } } }
void Update() { if (Input.GetMouseButtonDown(0)) { isClickUI = false; selectedGround = null; selectedOtherObject = null; clickPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //메인 카메라 화면 기준 좌표 //플레이어 오브젝트 선택(클릭) CastRayOnMouseClick(); if (!isClickUI) //UI를 클릭한 것이 아닌 경우 { //플레이어 오브젝트의 이동 if (selectedPlayer != null && selectedGround != null && !isClickPlayer) { if (!selectedPlayer.GetComponentInChildren <PlayerCharacterAnimation>().isWorking) { //작업중이 아니라면 selectedPlayer.GetComponent <MyCharacterMove>().MoveThisGround(selectedGround); } } //플레이어를 제외한 오브젝트들의 종합 이벤트 처리 함수 호출 if (selectedOtherObject != null) { selectedOtherObject.GetComponent <ObjectEventManager>().OnClickThisObject(selectedPlayer); } } selectedOtherObject = null; selectedGround = null; } if (Input.GetButtonDown("Cancel")) { //ESC키를 누르거나 화면이 전환되면 선택 해제 isClickPlayer = false; isClickUI = false; if (selectedPlayer != null) { selectedPlayer.transform.GetChild(1).gameObject.SetActive(false); } selectedPlayer = null; selectedGround = null; selectedOtherObject = null; ObjectEventManager.CancelAllSelectObject(); } }
public void ToggleViewKitchenToHall() { int i; //카메라 전환 hallCamera.enabled = true; hallCamera.depth = -1; hallCamera.GetComponent <EventListener>().enabled = true; kitchenCamera.enabled = false; kitchenCamera.depth = -2; kitchenCamera.GetComponent <EventListener>().enabled = false; //플레이어 선택 해제 kitchenCamera.GetComponent <EventListener>().ResetSelectPlayer(); hallCamera.GetComponent <EventListener>().ResetSelectPlayer(); //플레이어들의 현재 필드를 체크하여 갱신 for (i = 0; i < Camera.main.GetComponent <EventListener>().playableCharacterObjects.Length; i++) { Camera.main.GetComponent <EventListener>().playableCharacterObjects[i].GetComponent <MyCharacterMove>().CheckField(); } //Kitchen의 모든 스프라이트 해제(리소스 최소화) SpriteRenderer[] spriteInHall = hallMasterObject.GetComponentsInChildren <SpriteRenderer>(); SpriteRenderer[] spriteInKitchen = kitchenMasterObject.GetComponentsInChildren <SpriteRenderer>(); for (i = 0; i < spriteInHall.Length; i++) { if (spriteInHall[i].gameObject.CompareTag("Marker")) { continue; } spriteInHall[i].enabled = true; } for (i = 0; i < spriteInKitchen.Length; i++) { if (spriteInKitchen[i].gameObject.CompareTag("Marker")) { continue; } spriteInKitchen[i].enabled = false; } GameObject.Find("KitchenUI").GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); ObjectEventManager.CancelAllSelectObject(); }
public static void CancelAllSelectWithOutObject(GameObject obj) //지정 오브젝트를 제외한 모든 오브젝트 선택 해제 { GameObject[] objects = GameObject.FindGameObjectsWithTag("Object"); ObjectEventManager eventManager = null; for (int i = 0; i < objects.Length; i++) { if (objects[i] == obj) { continue; } //예외지정 오브젝트는 스킵함 eventManager = objects[i].GetComponentInChildren <ObjectEventManager>(); if (eventManager != null) { eventManager.CancelSelectObject(); } } GameObject.Find("KitchenUI").GetComponent <KitchenUI>().ChangeViewUI(TITLE.NONE); }
void CastRayOnMouseClick() // 유닛 히트처리 부분. 레이를 쏴서 처리합니다. { RaycastHit2D[] hit = Physics2D.RaycastAll(clickPos, Vector2.zero, 0f); bool onHitPlayer = false; bool onHitObject = false; if (hit.Length > 0) { //히트되었다면 여기서 실행 for (int i = 0; i < hit.Length; i++) { //플레이어가 선택된 경우 if (hit[i].collider.gameObject.CompareTag("Player")) { if (hit[i].transform.GetComponent <PlayerCharacterAnimation>().isWorking) { continue; } //작업중이면 선택하지 못함 onHitPlayer = true; if (hit[i].transform.parent.gameObject != selectedPlayer) { isClickPlayer = true; } //이전에 선택한 캐릭터와 다른 캐릭터를 클릭한 경우 else { isClickPlayer = false; } //이전 선택한 캐릭터와 동일한 캐릭터를 클릭한 경우 selectedPlayer = hit[i].collider.gameObject.transform.parent.gameObject; selectedPlayer.transform.GetChild(1).gameObject.SetActive(true); for (int j = 0; j < playableCharacterObjects.Length; j++) //오직 한명의 플레이어만이 선택되도록 함 { if (playableCharacterObjects[j] != selectedPlayer) { playableCharacterObjects[j].transform.GetChild(1).gameObject.SetActive(false); } } } else { if (hit[i].collider.gameObject.CompareTag("SpriteInObject")) //특정 오브젝트인 경우 { selectedOtherObject = hit[i].collider.gameObject; onHitObject = true; } if (hit[i].collider.gameObject.CompareTag("Ground")) { selectedGround = hit[i].collider.gameObject; if (isClickPlayer) { //플레이어를 클릭한 이후의 클릭부터 이동 가능 -> 클릭하자마자 이동하는 것을 방지 isClickPlayer = false; selectedGround = null; } } if (hit[i].collider.CompareTag("UI")) { isClickUI = true; } //UI 클릭 시 } } //for문 끝 if (onHitPlayer && onHitObject) { //플레이어와 오브젝트가 동시에 클릭된 경우 (스프라이트 곂쳐짐) //더 뒤쪽에 있는 게임 오브젝트를 무시함 if (selectedPlayer.transform.position.y < selectedOtherObject.transform.position.y) { ObjectEventManager.CancelAllSelectObject(); //전체 오브젝트 선택 해제 selectedOtherObject = null; } else { //플레이어 선택 해제 ResetSelectPlayer(); } } else if (onHitPlayer) { ObjectEventManager.CancelAllSelectObject(); } } } //hit처리 완료