Пример #1
0
    public void ShiftBlock(bool left)
    {
        if (m_HasLanded)
        {
            return;
        }

        if (left && !BlockGrid.IsFilled(m_GridPosition.Item1 - 1, m_GridPosition.Item2))
        {
            // Move out of previous space
            BlockGrid.ChangeBlockStatus(false, m_GridPosition);

            // Move into new space
            m_GridPosition = new Tuple <int, int>(m_GridPosition.Item1 - 1, m_GridPosition.Item2);
            BlockGrid.ChangeBlockStatus(true, m_GridPosition);

            // Finally, reset world position
            transform.position = BlockGrid.GridCoordToWorldPosition(m_GridPosition);
        }
        else if (!left && !BlockGrid.IsFilled(m_GridPosition.Item1 + 1, m_GridPosition.Item2))
        {
            // Move out of previous space
            BlockGrid.ChangeBlockStatus(false, m_GridPosition);

            // Move into new space
            m_GridPosition = new Tuple <int, int>(m_GridPosition.Item1 + 1, m_GridPosition.Item2);
            BlockGrid.ChangeBlockStatus(true, m_GridPosition);

            // Finally, reset world position
            transform.position = BlockGrid.GridCoordToWorldPosition(m_GridPosition);
        }
    }
Пример #2
0
    private void Update()
    {
        if (!m_HasLanded && Time.time - m_LastTickTime >= GridMoveTick)
        {
            m_LastTickTime = Time.time;

            // Attempt to move downwards
            if (!BlockGrid.IsFilled(m_GridPosition.Item1, m_GridPosition.Item2 - 1))
            {
                // Move out of previous space
                BlockGrid.ChangeBlockStatus(false, m_GridPosition);

                // Move into new space
                m_GridPosition = new Tuple <int, int>(m_GridPosition.Item1, m_GridPosition.Item2 - 1);
                BlockGrid.ChangeBlockStatus(true, m_GridPosition);

                // Finally, reset world position
                transform.position = BlockGrid.GridCoordToWorldPosition(m_GridPosition);
            }
            else
            {
                // Block has landed
                m_HasLanded = true;
            }
        }
    }