Unity 5 Dinamik Hareketli Silah Kodu (C#)

Yayımlanma Tarihi: 14 Haziran 2017

Son Değiştirilme Tarihi: Ağustos 31, 2017

Çoğu oyunda gördüğümüz bir olay olan dinamik silah hareketi, farenin yönü ve hızına ve yönüne bağlı olarak silahın yer değiştirmesidir. Bunu Unity’de başarmak aslında çok kolay. Aşağıda verdiğim C# kodu, yeni script oluşturarak kullanmaya başlayabilirsiniz.

 

 

Kod Açıklaması

Kodun işleyişi aslında çok basit. Bir tane GameObject nesnesi oluşturuyoruz. Bu bizim seçeceğimiz yani dinamik olarak hareket ettirmek istediğimiz objeyi belirtiyor. Bu da bizim silahımız oluyor.(Animasyonlar ile beraber çalışmasında sıkıntı yaşanabiliyor o yüzden bir tane üst nesne oluşturmada fayda var.

 

 

Bu kısımda yer değiştirmenin ne kadar hızlı ve kuvvetli olacağını belirtiyoruz.

 

Aşağıdaki iki değişken ise silahın iki eksendeki hareketini sağlamak için çağrılıyor.

 

Burada ise silahımınız veya üst nesnemizin ana pozisyonunu (x,y,z) cinsinden depoluyoruz. Böylelikle yeni pozisyonu oluştururken (x,y,z) koordinatlarında toplama işlemi yapabileceğiz.

 

İsminden de belli olacağı üzere yeni pozisyon için ayrıca (x,y,z) oluşturuyoruz.

 

Start fonksiyonumuzda ana objemizin yerini belirtiyoruz.

 

Update fonsiyonunda ise ilk öncelikle moveX ve moveY değişkenlerinin ne yapacağını belirtiyoruz. İsimlerinden de anlaşılacağı üzere x ve y eksenlerinde pozisyonu değiştirmeye yarayacaklar. O yüzden ilk öncelikle moveX değişkenini Input.GetAxis(“Mouse X”) eşitleyerek x eksenindeki değişimleri kaydetmesini söylüyoruz. Fakat bu yeterli olmuyor. Time.deltaTime fonksiyonunu kullanarak Update fonsiyonunun her karede çağrılması yerine her saniyede çağrılmasını sağlıyoruz. Son olarak da ne kadar kuvvetli yer değiştirme istediğimiz değişken(moveAmount) ile çarpıyoruz. Aynısı moveY için y ekseninde geçerlidir.

Bundan sonra eski pozisyona belirttiğimiz değişkenleri ekleyerek objenin yeni yerini tanımlıyoruz. Son olarak da Lerp fonksiyonunu kullanarak pürüzsüz bir animasyon efekti alıyoruz.

 

 

 

 

Etiketler: , ,


Bir cevap yazın

E-posta hesabınız yayımlanmayacak.