Popüler Yayınımıza da Göz Atabilirsiniz

Unity ile Nesnelerin Çarpışma Hızını Bulmak

Merhaba Herkese,

Mesela bir bombamız var eğer duvara çok hızlı çarpıyorsa bu duvarın yok olmasını ama yavaş çarparsa hiçbir şey olmasını istemez isek bunu Unity üzerinde nasıl yapabiliriz?

İlk olarak; objelerimizin çarpışmasını Unity üzerinde OnCollisionEnter (3d için) OnCollisionEnter(2D için) algılıyorduk. Duvar nesnemizin scriptine gidip bu fonksiyonu yazıyoruz. Bu sayede çarpan nesneleri kod üzerinde algılayabiliriz.

class Duvar : MonoBehaviour {

     void OnCollisionEnter2D()
     {
     }
}

Evet Fonksiyonumuzu yazdık peki çarpan nesneyi nasıl anlayacağız. Onu ise parantez aralığına Collision2D coll yazarak. Artık duvara nesnenin ismi coll. 

class Duvar : MonoBehaviour {

     void OnCollisionEnter2D(Collision2D coll)
     {

     }
}

Artık çarpma hızımızı algılayabiliriz. Bunun için relativeVelocity vektörünü kullanacağız.

class Duvar : MonoBehaviour {

     void OnCollisionEnter2D(Collision2D coll)
     {
              if (coll.relativeVelocity.magnitude > 7f) {
                   Destroy(gameobject);
               }
     }
}

RelativeVelocity vektörü duvara çarpan nesnenin x,y,z ekseninde hareket vektörüdür. Magnitude dememizle birlikte bu vektörün uzunluğunu bulmuş oluyoruz yani duvara çarptığı anki hızını. If sayesinde kontrol ederek eğer 7f den büyükse objeyi yok et diyoruz.


Yorumlar

Bu blogdaki popüler yayınlar

C# örnekleri oyun nasıl yapılır

C# Puan Tablosu Oluşturma

C# ile List İçinde Değer Arama ve Bulma Find ve FindAll Komutu