Menu
CoddyTech

Quebrar

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

Os tijolos não têm Rigidbody, mas a bola tem, e o Unity envia OnCollisionEnter para ambos os objetos em uma colisão. Então, um tijolo pode perceber o impacto por conta própria. No script do tijolo, gameObject é o tijolo e collision.gameObject é aquilo que o atingiu.

A pontuação pertence ao GameManager, e os tijolos são cópias de um prefab. Um prefab é um recurso fora da cena, então seus campos não podem apontar para o GameManager da cena no Inspector. O GameManager define o GameManager.Instance estático como ele mesmo em Awake(), então qualquer script pode acessá-lo, inclusive as cópias do prefab.

Um vaso que se quebra quando o jogador esbarra nele:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player")) Shatter();
}

public void Shatter()
{
    Destroy(gameObject);
}

Destroy(gameObject) remove o vaso. Destroy(collision.gameObject) removeria o jogador, e Destroy(this) remove apenas o script, deixando o vaso de pé. Manter a quebra em seu próprio método público permite que outros códigos, como uma bomba ou um bônus, também quebrem o vaso.

challenge icon

Desafio

Médio
  1. Em GameManager, adicione um int score e public void BrickBroken(Brick brick), que adiciona os points do tijolo a score.
  2. Em Brick, escreva public void Hit(): ele informa a GameManager.Instance que este tijolo quebrou e, em seguida, destrói o tijolo.
  3. Adicione OnCollisionEnter a Brick: quando o objeto marcado com a tag Ball o atingir, chame Hit().

Pressione Play, quebre alguns tijolos e, em seguida, clique em Check.

Experimente você mesmo

using UnityEngine;

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

    // Próximo passo: a bola quebra um bloco e ganha os pontos dele.
}
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