Menu
CoddyTech

Çarpınca Kırıl

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

Darbe ne kadar şiddetliydi? collision.relativeVelocity, iki nesnenin karşılaştıkları anda birbirlerine doğru ne hızla yaklaştıklarını gösterir ve magnitude değeri darbe hızını m/s cinsinden verir. 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 yalnızca 2 m/s hızla çarpar ve her iki araba da aynı darbe hızını görür.

Bu yumurta, yere crackSpeed değerinden daha hızlı ç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 ç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 darbenin kendi hızını korur. Bu bir hız olduğundan kütlenin etkisi yoktur: 6 m/s hızla yere inen ağır bir yumurta da hafif bir yumurta da aynı 6 değerini verir.

challenge icon

Görev

Kolay

Top pencereye doğru yuvarlanır: yukarı ok tuşu onu yavaşça, Space ise hızlıca yuvarlar (Bowler.cs, zaten yazıldı). Window.cs dosyasını yaz. Pencerenin bir strength değeri vardır (Inspector'da 10).

  • Her çarpma, pencerenin gücünü darbe hızı kadar azaltır: 2 m/s hızındaki bir çarpma, strength değerini 2 azaltır.
  • strength 0'a veya daha düşük bir değere ulaştığında pencere kırılır: pencereyi yok et.

Play'e bas, birkaç topu yavaşça ve ardından bir topu hızlıca yuvarla, sonra Check'e bas.

Kendin dene

using UnityEngine;

public class Window : MonoBehaviour
{
    public float strength = 10f;

    // Her darbe, çarpma hızını strength değerinden düşürür; değer 0 olduğunda pencere parçalanır
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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