Menu
CoddyTech

Tijolos Resistentes

Lição 7 de 19 do curso Jogo 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

Os tijolos da fileira superior precisam de dois acertos.

  1. Em Brick, adicione public int hits = 1;, public Color[] colors; (a cena define azul, laranja, vermelho) e SetHits(int count): defina hits e a cor colors[hits - 1].
  2. Hit() subtrai um de hits: quando chega a 0, o tijolo quebra e pontua; caso contrário, mostra a nova cor.
  3. Em GameManager, adicione public int[] rowHits = { 2, 1, 1, 1, 1 }; e chame brick.SetHits(rowHits[row]) em cada novo tijolo.

Pressione “Jogar”: a fileira superior fica laranja e, ao ser atingida, fica azul. Depois, pressione “Verificar”.

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);
    }
}

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

Pratique por conta própria: Playground de Unity