//Moves Invader in horizontal Axis private IEnumerator UpdateInvaderMovementHoriZontal() { m_firableColumnReady = false; Invader[] firableColumn = new Invader[m_invaderRows[0].Length]; // we also calulate the firing coumn here to avoid another itration for (int i = m_invaderRows.Length - 1; i >= 0; i--) { Invader[] invaderRow = m_invaderRows[i]; for (int j = 0; j < m_gridColumns; j++) { Invader invader = invaderRow[j]; if (invader != null) { Vector3 horizontalDeltaMove = new Vector3(m_invaderHorMovDirection * m_horizonatalVeleocity, 0, 0); // calculate new move delta invader.Move(horizontalDeltaMove); invader.PlayAnimation(); if (firableColumn[j] == null) { firableColumn[j] = invader; } } } yield return(new WaitForSeconds(m_moveUpdateInterval / m_invaderRows.Length)); } m_firableColumn = firableColumn; m_firableColumnReady = true; yield return(null); }
// Moves Invader in vertical down Axis when the horizonatl move reach on the boundary private void UpdateInvaderMovementVertical() { for (int i = m_invaderRows.Length - 1; i >= 0; i--) { Invader[] invaderRow = m_invaderRows[i]; for (int j = 0; j < m_gridColumns; j++) { Invader invader = invaderRow[j]; if (invader != null) { Vector3 verticallDeltaMove = new Vector3(0, -m_verticalVeleocity * 1.0f, 0); invader.Move(verticallDeltaMove); invader.PlayAnimation(); } } } }