Menu
CoddyTech

Quebrar

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

A bola quebra os tijolos e soma os pontos deles.

  1. Em GameManager, adicione int score; e public void BrickBroken(Brick brick), que soma brick.points à pontuação.
  2. Em Brick, escreva public void Hit(): GameManager.Instance.BrickBroken(this);, depois Destroy(gameObject);
  3. Em OnCollisionEnter de Brick, chame Hit() quando o objeto estiver marcado como Ball.

Pressione “Jogar” e lance a bola: cada tijolo atingido por ela desaparece. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

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

    // A seguir: a bola quebra um bloco e marca os pontos dele.
}

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

Pratique por conta própria: Playground de Unity