void Update() { if (theInGame.m_curGameState == InGameManager.eGameState.ReadyForPlay) { eAState = eAniState.Idle; m_hp = 170 * (theInGame.m_curStage * 1.1f); m_curHp = m_hp; m_atk = 17 * (theInGame.m_curStage * 1.1f); } EnemyAniState(); }
void Update() { if (InGameManager.InGameInstance.m_curGameState == InGameManager.eGameState.ReadyForPlay) { eAState = eAniState.Idle; m_curHp = m_hp; if (m_isBeginHeld == true) { Vector3 mousePos; mousePos = Input.mousePosition; mousePos = Camera.main.ScreenToWorldPoint(mousePos); this.gameObject.transform.localPosition = new Vector3(mousePos.x - m_startPosX, mousePos.y - m_startPosY, 0); //----- Ray를 쏘아 태그를 판별해서 이벤트를 발생시킬 부분 ----- Vector2 touchPos = new Vector2(mousePos.x, mousePos.y); Ray2D ray = new Ray2D(touchPos, Vector2.zero); RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction); // 캐릭터 팔기 if (hit.collider.tag == "Sell") { m_isSell = true; } else { m_isSell = false; } // 캐릭터 팔기 // 캐릭터 슬롯 이동 if (hit.collider.tag == "MoveCharacter") { // Debug.Log("Move Char"); m_isActive = false; m_movSlotNum = (int)hit.collider.gameObject.GetComponent <CharacterSlot>().eNum; } else { m_isActive = true; } // 캐릭터 슬롯 이동 //----- Ray를 쏘아 태그를 판별해서 이벤트를 발생시킬 부분 ----- } } else if (theInGame.m_curGameState == InGameManager.eGameState.WaitPlayTime) { for (int n = 0; n < theInGame.m_isCharSlotOn.Length; n++) { theInGame.m_cardZone[n].gameObject.SetActive(false); } // 판매 UI Off theCardInfo.SellOff(); theCardInfo.OffInfoPanel(); // 판매 UI Off this.transform.position = m_originPos; } CharacterAniState(); }
/// <summary> /// 캐릭터 애니메이션 부분 /// </summary> public void CharacterAniState() { if (theInGame.m_curGameState == InGameManager.eGameState.Play) { switch (eAState) { case eAniState.Idle: // 객체가 없거나 죽어있는 녀석을 제외하고, 가까이 있는 적을 찾아낸다. foreach (GameObject taggedEnemy in StageManager.StageInstance.m_tfEnemy) { if (taggedEnemy == null || taggedEnemy.GetComponent <EnemyController>().m_isDeath == true) { continue; } Vector2 objPos = taggedEnemy.transform.position; if (Vector2.Distance(transform.position, objPos) < dist) { dist = Vector2.Distance(transform.position, objPos); m_targetEnemy = taggedEnemy; } } // 객체가 없거나 죽어있는 녀석을 제외하고, 가까이 있는 적을 찾아낸다. if (m_targetEnemy == null) { InGameManager.InGameInstance.m_isClear = true; m_aniCtrl.SetTrigger("EndPlay"); dist = 1000; } else { eAState = eAniState.Run; } break; case eAniState.Run: //----- 적과 관련 ------ // 객체가 없거나 죽어있는 녀석을 제외하고, 가까이 있는 적을 찾아낸다. foreach (GameObject taggedEnemy in StageManager.StageInstance.m_tfEnemy) { if (taggedEnemy == null || taggedEnemy.GetComponent <EnemyController>().m_isDeath == true) { continue; } Vector2 objPos = taggedEnemy.transform.position; if (Vector2.Distance(transform.position, objPos) < dist) { dist = Vector2.Distance(transform.position, objPos); m_targetEnemy = taggedEnemy; } } // 객체가 없거나 죽어있는 녀석을 제외하고, 가까이 있는 적을 찾아낸다. if (m_targetEnemy == null) { eAState = eAniState.Idle; dist = 1000; break; } float mov = m_movSpeed * Time.deltaTime; transform.position = Vector2.MoveTowards(transform.position, m_targetEnemy.transform.position, mov); if (Vector2.Distance(transform.position, m_targetEnemy.transform.position) <= m_atkRange) { eAState = eAniState.Attack; // 내 위치와 적 위치가 공격범위 안쪽이면 공격! } //----- 적과 관련 ----- break; case eAniState.Attack: if (m_targetEnemy.GetComponent <EnemyController>().m_isDeath == true) { eAState = eAniState.Idle; // 현재 캐릭터를 Idle 상태로 dist = 1000; // dist를 초기화 m_targetEnemy = null; // 죽였다면 타겟이 없는걸로 } break; case eAniState.Death: m_aniCtrl.SetTrigger("Death"); break; } m_aniCtrl.SetInteger("AniState", (int)eAState); // Debug.Log(m_targetEnemy); } }