void OnMouseDown() { if (SpawnManager.Instance.tutorialPanel.eTutorialState == TutorialOrder.E_TUTORIAL_START_IMAGE01 || SpawnManager.Instance.tutorialPanel.eTutorialState == TutorialOrder.E_TUTORIAL_START_IMAGE02) { return; } if (Input.GetMouseButtonDown(0) && (E_STATE == ENORMAL_STATE.WAIT || WeaponBackground.activeSelf)) { //onPointerDown 보다 먼저 호출 //if (!EventSystem.current.IsPointerOverGameObject ()) { m_bIsRepair = true; //현재 아르바이트가 수리중인지 확인 ArbaitBatch arbait = SpawnManager.Instance.OverlapArbaitData(gameObject); if (arbait != null) { arbait.ResetWeaponData(); } RepairShowObject.GetWeapon(gameObject, weaponData, m_dComplate, m_fTemperator); backGround.sprite = PlayerRepairSpeech; //} } }
IEnumerator CharacterAction() { switch (E_STATE) { case ENORMAL_STATE.WALK: m_anim.SetBool("bIsWalk", true); //Move 함수를 통해 지정된 위치로 자연스럽게 이동하기 위해 MoveTowards 함수를 사용 transform.position = Vector3.MoveTowards(transform.position, m_VecMoveDistance, fSpeed * Time.deltaTime); //만약 도착했다면 if ((transform.position.x == m_VecMoveDistance.x)) { //처음일 경우 true로 바꿔주고 수리 할 수 있는 무기를 보여줌 if (m_bIsFirst == false) { m_bIsFirst = true; WeaponBackground.SetActive(true); TimerGameobject.SetActive(true); } //만약 수리중이라면 도착했다는것으로 간주하고 리턴 if (m_bIsRepair) { m_bIsArrival = true; yield break; } //만약 현재 수리중인 오브젝트가 없을 경우 //수리 중 및 도착한것으로 바꾸고 현재 무기를 넣어준다. if (RepairShowObject.AfootObject == null) { m_bIsRepair = true; m_bIsArrival = true; RepairShowObject.GetWeapon(gameObject, weaponData, m_fComplate, m_fTemperator); SpeechSelect((int)E_SPEECH.E_PLAYER); yield break; } //지정된 위치로 도착했다면 if (m_bIsArrival == false) { m_bIsArrival = true; //수리할 수 있는 아르바이트가 있는지 체크한다. m_nCheck = SpawnManager.Instance.InsertArbatiWeaponCheck(weaponData.nGrade); if (m_nCheck != (int)E_CHECK.E_FAIL) { m_bIsRepair = true; SpeechSelect(m_nCheck); SpawnManager.Instance.InsertArbaitWeapon(m_nCheck, gameObject, weaponData, m_fComplate, m_fTemperator); } } } break; case ENORMAL_STATE.WAIT: m_anim.SetBool("bIsWalk", false); break; case ENORMAL_STATE.BACK: //딱 한번만 호출 되야 하는 부분 if (!m_bIsFirstBack) { m_bIsFirstBack = true; boxCollider.isTrigger = true; m_anim.SetBool("bIsWalk", true); //이미지 변경이나 효과 애니메이션 변경등을 진행 mySprite.flipX = false; mySprite.sortingOrder = (int)E_SortingSprite.E_BACK; //현재 오브젝트를 보내서 있는지 확인 RepairShowObject.CheckMyObject(gameObject); //현재 캐릭터를 지움 SpawnManager.Instance.DeleteObject(gameObject); if (RepairShowObject.AfootObject == null && m_bIsAllBack == false) { SpawnManager.Instance.AutoInputWeaponData(); } //결과값 호출 Complate(m_fComplate); //현재 아르바이트가 수리중인지 확인 ArbaitBatch arbait = SpawnManager.Instance.OverlapArbaitData(gameObject); //수리 중 이였다면 아르바이트 초기화 if (arbait != null) { arbait.ResetWeaponData(); } WeaponBackground.SetActive(false); TimerGameobject.SetActive(false); } transform.position = Vector3.MoveTowards(transform.position, m_VecStartPos, fSpeed * Time.deltaTime); if (Vector3.Distance(transform.position, m_VecStartPos) < 0.5f) { gameObject.SetActive(false); } break; default: break; } yield return(null); }