Unity’de Köprü Yapımı (Hinge Joint Kullanımı)

Unity’de Köprü Yapımı (Hinge Joint Kullanımı)

24 Mayıs 2020 0 Yazar: Ahmet Güler

Merhaba, bir önceki yazımda Unity ile Ragdoll kullanımı öğrenmiştik.Yapmış olduğumuz projelerde Ragdoll fiziğini kullanarak, karakterlerimize eklem hareketi verebiliyorduk.Böylece başka bir nesne ile etkileşime girdiği zaman yada bir kuvvete maruz kaldığı zaman odun gibi durmak yerine tepki verebiliyordu.Bugünkü dersimizde ise, Unity ile bir köprü yapacağız.Tabi bu köprüyü yapmakta ki amacımız ise, Hinge Joint bileşeninin nasıl kullanıldığını öğrenmek için olacak.Şimdi yeni bir proje oluşturalım ve dersimize başlayalım.

Sahnemizi oluşturmaya başlayalım.

Evet bu projede kullanacağımız senaryoda, iki bölge arasında bir köprümüz olacak ve bu köprüye ekleyeceğimiz Hinge Joint bileşeni ile bir fizik oluşturacağız.Buradaki fizikten kastım, köprü üzerindeki salınımlar içindir.Çünkü bu bileşenin görevi basit bir anlatımla, menteşe sistemi görevini yürütüyor.Bu menteşeler (Hinge Joint) ile bağlantı noktalarını oluşturan nesneler üzerindeki Rigidbody bileşeni birleştiği zaman ortaya güzel bir görüntü çıkacaktır.

Şimdi ilk olarak bir Plane nesnesi oluşturalım.Bu nesne bizim zeminimizi oluşturacak.Daha sonra bir tane Cube nesnesi oluşturuyoruz.Bu nesneyi Scene penceresinden istediğimiz şekilde ayarlıyoruz.Bir köprü yaptığımız için, bu Cube nesnesinin boyu biraz uzun olsa iyi olur.Daha sonra bu Cube nesnesinden bir kopya oluşturuyoruz.Oluşturduğumuz bu kopyamızı ise, karşı tarafa yerleştiriyoruz.İki nesne arasındaki mesafeyi kendinize göre belirleyebilirsiniz.

Unity-Köprü-Yapımı-Hinge-Joint-Kullanımı-How-do-you-use-a-hinge-joint

Köprümüzün bağlantı noktalarını oluşturduk.Ancak yapmamız gerek bir şey daha var.Hinge Joint bileşeni bağlantı noktalarını oluştururken, hedef nesnenin Rigidbody bileşenini baz alıyor.Eğer bu bileşen eklemeye çalıştığınız nesnede yok ise, menteşe olarak kullanamazsınız.Bu yüzden Sahnemizde ki Cube nesnelerine Inspector penceresinden, Rigidbody bileşenini ekliyoruz.Daha sonra fizik kuvvetinden bu nesnelerin etkilenmemesi gerekiyor.Bunun içinde bu bileşende bulunan, “isKinematic” özelliğini aktif hale getiriyoruz.

Evet şimdi köprümüzü oluşturmaya başlayabiliriz.Köprü için bize gereken malzemeler, halat ve tahtalar olacaktır.Halatlar, Hinge Joint bileşeni ile tahtaları birbirlerine bağlayarak menteşe sistemini oluşturacaktır.Bu halatı yapmanın birden çok yolu var.Hinge Joint bileşenini daha iyi anlamak için ben, tek parça bir halat yerine birden çok parçası bulunan bir halat yapacağım.Böylece köprüdeki salınımları daha iyi görebileceğiz.

Halatı oluşturmak için Capsule nesnesini kullanacağız.Bu nesneyi Scene penceresinden istediğimiz ölçülerde ayarladıktan sonra, kopyalamaya başlayacağız.Bu kopyaların sayısını siz istediğiniz gibi ayarlayabilirsiniz.Ben her tahta basamak için altı “6” tane Capsule nesnesinin kopyasını oluşturdum.Bunları da üç “3” bir tarafa üç “3” bir tarafa olmak üzere ayırdım.Ancak kopyalarımızı oluşturmaya başlamadan önce kullanacağımız bileşenleri eklememiz gerekiyor.

Unity-Köprü-Yapımı-Hinge-Joint-Kullanımı-How-do-you-use-a-hinge-joint

Bunlar ise, Rigidbody ve Hinge Joint bileşenleridir.İlk oluşturduğumuz Capsule nesnesine, bu bileşenleri Inspector penceresinden ekliyoruz.Yalnız, Hinge Joint bileşeninden iki “2” tane ekliyoruz.Bunun nedeni ise, halatımızın iki ucunun olması ve her iki tarafı birbirine bağlamamız gerektiği içindir.Şimdi halat için kullanacağımız, Capsule nesnesini kopyalamaya başlayabiliriz.

Köprü için bir diğer malzememiz ise, tahtalardı.Bunları oluşturmak içinde Cube nesnelerinden faydalanacağız.Yine Scene penceresinden bu Cube nesnemizi istediğimiz ölçülerde ayarlıyoruz.Sonra bu nesnemize de Rigidbody bileşeni eklememiz gerekiyor.Bileşeni ekledikten sonra, “Mass” bölümünden tahtalarımızın ağırlığını istediğiniz gibi ayarlayabilirsiniz.Böylece menteşelerin üzerine binen yük değişeceği için, farklı sonuçları gözlemleyebilirsiniz.

Unity-Köprü-Yapımı-Hinge-Joint-Kullanımı-How-do-you-use-a-hinge-joint

Evet şimdi halat ve tahtalarımızdan kopyalar oluşturarak köprümüz tamamlayalım.Köprümüz oluşturduk ama menteşe noktaları halen boş durumdadırlar.Projeyi başlattığımız zaman, her bir parçanın ayrı hareket ettiğini ve parçalandığını görüyoruz.Bunun önüne geçmek için, Hinge Joint bileşeninde bulunan Connected Body bölümüne bağlantı noktalarını eklememiz gerekiyor.

Hinge Joint bileşeninin özellikleri.

Köprünün bağlantı noktalarını oluşturmadan önce, Hinge Joint bileşenin özelliklerine bir bakalım.

  1. Connected Body : Bağlantı noktasını oluşturur.Eğer boş bırakılırsa, bağlantı noktası uzay olur.
  2. Anchor : Çapanın görevi, salınımı oluşturacağı eksenin konumu belirlemektir.
  3. Axis : Eksenin görevi, salınımın oluşacağı eksen yönünü belirlemektir.
  4. Auto Configure Connected Anchor : Eğer bu özellik aktif ise, bağlantı konumu baz alınarak otomatik olarak eksenin konumu ayarlanır.Bu özelliği pasif hale getirerek, manuel ayar yapmanız mümkündür.
  5. Connected Anchor : Çapanın bağlı olduğu konumu gösterir.
  6. Use Spring : Bu özellik aktif ederek, salınımı kontrol edebilirsiniz.
  7.  Spring >  Spring : Nesnenin kendi konumuna dönmesi için uyguladığı kuvveti ayarlar.
  8. Spring > Damper : Nesnenin hareket hızını kontrol etmek için uyguladığı kuvveti ayarlar.Bu değer ne kadar yüksek ise, nesne o kadar yavaş hareket eder.
  9. Spring > Target Position : Nesne üzerindeki salınımı, hedef noktaya doğru çeker.
  10. Use Motor : Bu özellik aktif ise, nesne etrafında dönebilir.
  11. Motor > Target Velocity : Nesenin çıkabileceği hızı ayarlar.
  12. Motor > Force : Nesenin çıkabileceği hıza ulaşmak için uygulayacağı kuvveti ayarlar.
  13. Motor > Free Spin : Bu özellik aktif edilirse, nesne çıkacağı hıza ulaşırken frenleme yapmaz.
  14. Use Limits : Bu özellik aktif edilirse, nesnenin açısını kontrol edebilirsiniz.
  15. Limits > Min : Nesnenin minimum açısını ayarlar.
  16. Limits > Max : Nesnenin maksimum açısını ayarlar.
  17. Limits > Bounciness : Nesnenin minimum ve maksimum sınırlarda ne kadar zıplayacağını ayarlar.
  18. Limits > Contact Distance : Bu özellik aktif edilirse, nesnelerin birbirlerine teması sırasında oluşan titreşimi önleyecektir.
  19. Break Force : Nesnelerin (menteşe noktalarının) birbirinden ayrılması için uygulanacak kuvveti belirler.
  20. Break Torque : Nesnelerin (menteşe noktalarının) birbirinden ayrılması için uygulanacak torku belirler.
  21. Enable Collision : Bu özellik aktif edilirse, nesne ile menteşe noktaları arasında çarpışma olur.
  22. Enable Preprocessing : Bu özellik pasif edilirse, mümkün olmayan yapılandırmaları stabilize etmeye katkı sağlar.

Halat ve tahtaları birbirlerine bağlayalım.

Evet köprümüzün bağlantı noktalarını oluşturmaya başlayalım.Az öncede değindiğim gibi, Hinge Joint bileşeninde bulunan Connected Body bölümüne bu bağlantı noktalarını eklememiz gerekiyor.Sahnemizde birden çok halat parçası ve tahta parçası bulunuyor.Bu başta size karmaşık bir işlemmiş gibi gözükebilir.Ancak işin mantığını kavradığınız zaman gayet basit olduğunu anlayacaksınız.

Yukarıda bulunan resime bakacak olursak, “Halat1” nesnesi için ilk bağlantı noktamız, dağı oluşturan nesnemizin başlangıç tarafıdır.İkinci bağlantı noktası ise, kendinden sonra gelen halat parçası olan “Halat3” nesnesidir.Böylece dağ ile halat parçamızı birbirlerine bağlamış olduk.Bu şekilde tüm halat ve tahta parçalarını birbirlerine bağlıyoruz.Bağlarken, önünde ve arkasında yada sağında ve solunda olan nesneleri sürükleyerek, Hinge Joint bileşeninde bulunan Connected Body bölümüne bırakıyoruz.

Sonuç olarak, bir köprümüz oluşuyor.Şimdi projemizi başlattığımız zaman, halat parçalarında (menteşe noktalarında) düzensiz hareketler görüyoruz.Bunu önlememiz gerekiyor ve daha durağan bir salınım hareketine ihtiyacımız var.Yukarıda Hinge Joint bileşenin özelliklerine bakacak olursak, Spring ve Limits özelliklerini ayarlamamız gerektiğini görüyoruz.

Unity-Köprü-Yapımı-Hinge-Joint-Kullanımı-How-do-you-use-a-hinge-joint

Evet bu ayarların ne işe yaradıklarını az önce yazdığım için tekrar yazmayacağım.Deneme yanılma yaparak istediğiniz salınım hareketini oluşturabilmeniz mümkündür.Resimde de görüldüğü gibi ben böyle bir ayar yaptım.Bu arada, Connected Body bölümünde bulunan halat numaraları kafanızı karıştırmasın.Ben bir sağdan ve bir soldan halatımı oluşturduğum için, tek ve çift sayılar şekilde bir bağlantı şeması oluştu.Yani bağlantılar arka arkaya geliyor fakat isimleri bu şekildedir.

Evet bu projemizde tamamlamış bulunuyoruz.Son yaptığımız Spring ve Limits ayarından sonra, istediğimiz köprüyü oluşturduk.Bu kadar zahmete girmeyip, yazdığımız kodlar ile bu köprüyü otomatik olarak oluşturabilirdik.Ancak yazının amacına uygun olmazdı ve neyin nereye geleceği anlaşılmazdı.Bu yüzden bu şekilde bir yol izledik ve kod yazmadık.Bundan sonraki yazılarda, diğer Joint bileşenlerinin nasıl kullanıldığını da anlatacağım.Evet bir sonraki yazıda görüşmek üzere…

Unity-Köprü-Yapımı-Hinge-Joint-Kullanımı-How-do-you-use-a-hinge-joint