Menu
CoddyTech

Tijolos Resistentes

Lição 7 de 16 do curso Jogo no Unity: Quebra-Tijolos da Coddy.

Alguns tijolos precisam de mais de um impacto. Cada tijolo mantém uma contagem dos impactos que ainda pode receber: um impacto subtrai um, e somente o impacto que a leva a 0 quebra o tijolo e marca pontos. Até lá, o tijolo muda de cor, para que o jogador veja quanta resistência ainda tem.

Um array de cores preenchido no Inspector associa a contagem a uma cor. O elemento 0 é a cor para um impacto restante, o elemento 1 para dois, então a cor para uma contagem de n é o elemento n - 1. Um escudo com cargas funciona da mesma forma:

public Color[] chargeColors;   // elemento 0: 1 carga restante

void ShowCharges(int charges)
{
    GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}

Acessar material dá a este renderer sua própria cópia do material na primeira vez, então um escudo, ou um tijolo, muda de cor sem repintar cada cópia do prefab. O GameManager decide quanta resistência cada novo tijolo tem: um int[] com um número por linha, começando pela linha superior, permite que a linha superior receba mais impactos do que as demais.

challenge icon

Desafio

Médio
  1. Em Brick, adicione public int hits = 1 e public Color[] colors. A cena preenche colors com azul, laranja e vermelho, para 1, 2 e 3 acertos restantes.
  2. Escreva public void SetHits(int count): ele define hits e mostra a cor correspondente do tijolo.
  3. Altere Hit(): subtraia um de hits. Quando chegar a 0, o tijolo quebra e pontua como antes; caso contrário, ele apenas mostra sua nova cor.
  4. Em GameManager, adicione public int[] rowHits = { 2, 1, 1, 1, 1 }; e atribua a cada novo tijolo rowHits[row] acertos usando SetHits.

Pressione Play, desgaste um tijolo laranja na fileira de cima e, em seguida, Check.

Experimente você mesmo

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball")) Hit();
    }

    public void Hit()
    {
        GameManager.Instance.BrickBroken(this);
        Destroy(gameObject);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo no Unity: Quebra-Tijolos