Menu
CoddyTech

Cosa ho colpito?

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 9 di 71.

Collision che Unity passa a OnCollisionEnter descrive l’altra parte del contatto. collision.gameObject è l’oggetto contro cui sei andato a sbattere, quindi collision.gameObject.name è il suo nome e collision.gameObject.CompareTag("Hazard") ne verifica il tag. (collision.collider è il collider esatto che hai toccato, quando un oggetto ne ha diversi.)

Questa autoscontro registra tutto ciò contro cui urta e si lamenta degli oggetti pericolosi:

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

La prima riga che registra è Bumped into Floor, nel momento in cui il gioco inizia: anche il pavimento su cui si trova è una collisione. Quindi, uno script che reagisce agli urti verifica sempre prima contro cosa ha urtato. Fai attenzione a quale oggetto indichi: CompareTag("Hazard") da solo verifica il tag del tuo oggetto, mentre Destroy(gameObject) distrugge il tuo oggetto e Destroy(collision.gameObject) rimuove quello contro cui hai urtato.

challenge icon

Sfida

Facile

Assegna un compito allo spazzaneve: rimuovi i blocchi contrassegnati con Snow.

  1. Aggiungi void OnCollisionEnter(Collision collision) a Plow, in modo che agisca solo quando collision.gameObject.CompareTag("Snow").
  2. All'interno, Destroy(collision.gameObject);, incrementa di 1 un campo cleared e registra "Cleared " + cleared.

Premi «Gioca» e guida nello snow: ogni blocco scompare e la Console lo conta. Poi premi «Verifica».

Provalo tu

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 contro cui va a sbattere lo spazzaneve: distruggila, contala e registra il conteggio nel log
}

Tutte le lezioni di Fisica e gameplay

Esercitati da solo: Playground Unity