Çarpınca Kırıl
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 10 / 71.
Darbe ne kadar şiddetliydi? collision.relativeVelocity, iki nesnenin karşılaştıkları anda birbirlerine ne kadar hızlı yaklaştıklarını gösterir; magnitude değeri ise m/s cinsinden çarpma hızıdır. Bu, hızların farkıdır: 10 m/s hızla giden bir araba, aynı yönde 8 m/s hızla giden bir arabaya çarptığında darbe hızı yalnızca 2 m/s olur ve her iki araba da aynı darbe hızını görür.
Bu yumurta, crackSpeed değerinden daha hızlı yere çarptığında kırılır. 1 m yükseklikten bırakıldığında yaklaşık 4.4 m/s hızla çarpar (2 x 9.81 x 1'in karekökü); 2 m yükseklikten bırakıldığında ise yaklaşık 6.3 m/s hızla çarpar:
public float crackSpeed = 5f;
void OnCollisionEnter(Collision collision)
{
if (collision.relativeVelocity.magnitude > crackSpeed)
{
Debug.Log("Splat!");
Destroy(gameObject);
}
}Neden yumurtanın kendi rb.linearVelocity değeri değil? OnCollisionEnter çalıştığında fizik motoru çarpışmayı zaten işlemiş olur; dolayısıyla yumurtanın hızı, çarpışmadan sonra geriye kalandır ve sıfıra yakındır. relativeVelocity ise çarpmanın kendi hızını korur. Bu bir hız olduğundan kütlenin etkisi yoktur: 6 m/s hızla yere inen ağır ve hafif yumurtalar aynı 6 değerini verir.
Görev
KolayWindow.cs dosyasını yaz: her çarpma pencereyi zayıflatır ve pencere 0'da parçalanır.
- Pencerenin
OnCollisionEnteryönteminde,collision.relativeVelocity.magnitudedeğerinistrengthdeğerinden çıkar. strength <= 0folduğundaDestroy(gameObject);çağır.
“Oyna” düğmesine bas, yukarı ok tuşuyla yumuşak toplar, ardından Space tuşuyla sert bir top yuvarla: pencere kırılır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// Her darbe, çarpma hızını strength değerinden düşer; strength 0 olduğunda pencere parçalanır
}
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