Example #1
0
    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();
    }
Example #2
0
    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();
    }
Example #3
0
    /// <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);
        }
    }