Ejemplo n.º 1
0
    private Masu.DIR GetMoveDir()
    {
        Masu.DIR ret = Masu.DIR.MAX;

        float move_v = Input.GetAxis("Vertical");
        float move_h = Input.GetAxis("Horizontal");

        if (0.0f < move_v)
        {
            ret = Masu.DIR.UP;
        }
        else if (move_v < 0.0f)
        {
            ret = Masu.DIR.DOWN;
        }
        else if (0.0f < move_h)
        {
            ret = Masu.DIR.RIGHT;
        }
        else if (move_h < 0.0f)
        {
            ret = Masu.DIR.LEFT;
        }
        else
        {
            ret = Masu.DIR.MAX;
        }
        return(ret);
    }
Ejemplo n.º 2
0
    private void Update()
    {
        if (m_iMovableCount <= 0)
        {
            return;
        }

        if (true == m_playerPosition?.IsMoving)
        {
            return;
        }


        Masu.DIR dir = GetMoveDir();

        GameObject target_masu_object = m_masuCurrent.GetConnectedMasuObject(dir);

        if (target_masu_object != null)
        {
            Masu temp           = target_masu_object.GetComponent <Masu>();
            int  target_masu_id = temp.masu_id;
            if (0 < m_iMoveCount)
            {
                // 戻る
                if (target_masu_id == m_iMoveHistory[m_iMoveCount - 1])
                {
                    m_iMoveHistory[m_iMoveCount] = 0;
                    m_iMoveCount    -= 1;
                    m_iMovableCount += 1;
                }
                else
                {
                    m_iMoveCount    += 1;
                    m_iMovableCount -= 1;
                    m_iMoveHistory[m_iMoveCount] = target_masu_id;
                }
            }
            else
            {
                m_iMoveCount    += 1;
                m_iMovableCount -= 1;
                m_iMoveHistory[m_iMoveCount] = target_masu_id;
            }

            m_playerData.masu_id = target_masu_id;
            m_masuCurrent        = MasuManager.Instance.GetMasu(m_playerData.masu_id);
            m_evMovableCount.Invoke(m_iMovableCount);

            if (m_iMovableCount <= 0)
            {
                m_evMovableCount.Invoke(-1);
                OnMoveEnd.Invoke();
                OnMoveEnd = null;
            }
        }
    }