Menu
CoddyTech

O que eu acertei?

Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 9 de 71.

O Collision que o Unity passa para OnCollisionEnter descreve o outro lado do contato. collision.gameObject é o objeto em que você bateu, então collision.gameObject.name é o nome dele, e collision.gameObject.CompareTag("Hazard") verifica a tag dele. (collision.collider é o colisor exato que você tocou, quando um objeto tem vários.)

Este carrinho de bate-bate registra tudo em que esbarra e reclama dos perigos:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Bumped into " + collision.gameObject.name);
    if (collision.gameObject.CompareTag("Hazard"))
    {
        Debug.Log("Ouch!");
    }
}

A primeira linha que ele registra é Bumped into Floor, no momento em que o jogo começa: o chão em que ele está também é uma colisão. Portanto, um script que reage a impactos sempre verifica primeiro em que objeto bateu. Preste atenção ao objeto que você nomeia: CompareTag("Hazard") sozinho verifica o seu próprio objeto, e Destroy(gameObject) destrói o seu próprio objeto, enquanto Destroy(collision.gameObject) remove aquele em que você bateu.

challenge icon

Desafio

Fácil

Dê uma função ao limpa-neve: limpar os blocos marcados com Snow.

  1. Adicione void OnCollisionEnter(Collision collision) a Plow, agindo somente quando collision.gameObject.CompareTag("Snow").
  2. Dentro dele, use Destroy(collision.gameObject);, some 1 ao campo cleared e registre "Cleared " + cleared.

Pressione “Jogar” e dirija contra a neve: cada bloco desaparece e o Console conta os blocos. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Plow : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;
    private int cleared;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        float h = Input.GetAxisRaw("Horizontal");
        rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
    }

    // Neve que o arado encontra: destrua-a, conte-a e registre a contagem
}

Todas as lições de Física e Jogabilidade

Pratique por conta própria: Playground de Unity