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.
Görev
KolayKar küreme aracına bir görev ver: Snow etiketi taşıyan blokları temizle.
Plowsınıfınavoid OnCollisionEnter(Collision collision)ekle ve yalnızcacollision.gameObject.CompareTag("Snow")olduğunda işlem yapmasını sağla.- İçeride
Destroy(collision.gameObject);çağır,clearedalanını 1 artır ve"Cleared " + cleareddeğ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
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir DuvarKendi başına pratik yap: Unity playground