public void DrawGhost(tetris_Shape originalShape, tetris_Board gameBoard) { if (!m_ghostShape) { m_ghostShape = Instantiate(originalShape, originalShape.transform.position, originalShape.transform.rotation) as tetris_Shape; m_ghostShape.gameObject.name = "GhostShape"; SpriteRenderer[] allRenders = m_ghostShape.GetComponentsInChildren <SpriteRenderer>(); foreach (SpriteRenderer r in allRenders) { r.color = m_color; } } else { m_ghostShape.transform.position = originalShape.transform.position; m_ghostShape.transform.rotation = originalShape.transform.rotation; m_ghostShape.transform.localScale = Vector3.one; } m_hitBottom = false; while (!m_hitBottom) { m_ghostShape.MoveDown(); if (!gameBoard.IsValidPosition(m_ghostShape)) { m_ghostShape.MoveUp(); m_hitBottom = true; } } }
private void MoveDown() { m_timeToDrop = Time.time + m_dropIntervalModded; m_timeToNextKeyDown = Time.time + m_keyRepeatRateDown; m_activeShape.MoveDown(); PlaySound(m_soundManager.m_moveSound, 0.01f); if (!m_gameBoard.IsValidPosition(m_activeShape)) { if (m_gameBoard.IsOverLimit(m_activeShape)) { GameOver(); } else { LandShape(); } } }