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.
Desafio
MédioOs tijolos da fileira superior precisam de dois acertos.
- Em
Brick, adicionepublic int hits = 1;,public Color[] colors;(a cena define azul, laranja, vermelho) eSetHits(int count): defina hits e a corcolors[hits - 1]. Hit()subtrai um de hits: quando chega a 0, o tijolo quebra e pontua; caso contrário, mostra a nova cor.- Em
GameManager, adicionepublic int[] rowHits = { 2, 1, 1, 1, 1 };e chamebrick.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