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.
Desafio
FácilDê uma função ao limpa-neve: limpar os blocos marcados com Snow.
- Adicione
void OnCollisionEnter(Collision collision)aPlow, agindo somente quandocollision.gameObject.CompareTag("Snow"). - Dentro dele, use
Destroy(collision.gameObject);, some 1 ao campoclearede 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
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para ColetarPratique por conta própria: Playground de Unity