Menu
CoddyTech

Neye Çarptım?

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 9 / 71.

Unity'nin OnCollisionEnter'a aktardığı Collision, temasın diğer tarafını açıklar. collision.gameObject çarptığın nesnedir; bu nedenle collision.gameObject.name onun adıdır ve collision.gameObject.CompareTag("Hazard") etiketini sorar. (Bir nesnenin birden fazla çarpıştırıcısı varsa collision.collider, dokunduğun tam çarpıştırıcıdır.)

Bu çarpışan araba çarptığı her şeyi kaydeder ve tehlikelerden şikâyet eder:

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

Kaydettiği ilk satır, oyun başladığı anda Bumped into Floor olur: üzerinde durduğu zemin de bir çarpışmadır. Bu nedenle çarpışmalara tepki veren bir betik, önce neye çarptığını sorar. Hangi nesneyi adlandırdığına dikkat et: tek başına CompareTag("Hazard") kendi nesneni sorar ve Destroy(gameObject) kendi nesneni yok eder; Destroy(collision.gameObject) ise çarptığın nesneyi kaldırır.

challenge icon

Görev

Kolay

Kar küreme aracına bir görev ver: Snow etiketi taşıyan blokları temizle.

  1. Plow sınıfına void OnCollisionEnter(Collision collision) ekle ve yalnızca collision.gameObject.CompareTag("Snow") olduğunda işlem yapmasını sağla.
  2. İçeride Destroy(collision.gameObject); çağır, cleared alanını 1 artır ve "Cleared " + cleared değerini günlüğe yaz.

“Oyna”ya bas ve aracı kara doğru sür: her blok kaybolur ve Console sayısını gösterir. Ardından “Kontrol et”e bas.

Kendin dene

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);
    }

    // Kar küreğinin çarptığı karı yok et, say ve sayıyı günlüğe kaydet
}

Fizik ve Oynanış bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground