Önce ki derse buradan erişebilirsiniz.
Unity 2D derslerinin 4. ile devam ediyoruz..
Unity “Script” e geçmeden önce her programlama dilinde olan 3 terimden bahsedeceğim
1: “Değişkenler” = Herhangi bir veriyi depolamak için kullanılır. Bkz: “Kodunu bir değişkene ata“
2: “Fonksiyonlar” = Kod kümeleredir. Bir çok yerde kullanacağınız kodları bir fonksiyon içine yazarak, fonksiyonu çağırmanız yeterli olacaktır.
3: “Sınıflar” = Fonksiyonlardan oluşan “Script” dosyaları diyebiliriz.
1. ders de söylediğim gibi, dersler C# üzerinden anlatılacaktır.
Bir “Script” dosyası oluşturarak dersimize başlayalım.. Bkz: Resim1
Karşımıza “Start” ve “Update” olmak üzere iki adet boş bir script geliyor
Şimdi sırasıyla inceleyelim. Bkz: Resim2
1: Bu alana kütüphanelerimizi ekleriz. Başına “using” ekleyerek
2: Kullandığımız Sınıf, başında bulunan “public” bu sınıfa diğer sınıflardan erişim sağlayabiliriz demektir.
“public” yerine “private” yazarsak dışardan erişemeyiz demektir.
3: Fonksiyonları “void” ile belirtiriz başında “private” olarak belirtmediğimiz her fonksiyon default olarak “public” olarak gelmektedir.
“Start” fonksiyonu oyunumuz başlar başlamaz çalışacak olan fonksiyondur.
Örnek bir Fonksiyon:
void FonksiyonAdı(Değer) {
kodlar...
}
4: “Update” fonksiyonu ise, her oyun karesinde(frame) bir kere çalışır. Saniyede bir kere scriptimize bakar da diyebiliriz.
“Update” fonksiyonun iki modeli daha vardır bunlar:
“FixedUpdate” her frame de birden çok kez çalışabilir.
“LateUpdate” Update fonksiyonu gibi her frame de bir kez çalışır, lakin önce “Update” fonksiyonu çalışır daha sonra “LateUpdate” fonksiyonu çalışır.
İlk Kodumuzu yazalım!! Bir “GameObject“i hareket ettirmemiz için öncellikle kodumuzun her saniye takip edilmesi lazım bu yüzden “Update” fonksiyonunun içine yazacağız.
Daha sonra objemizin konum(transform) pozisyonunu ayarlamamız gerekiyor.
Oyun tasarlarken yahut model yaparken bilmeniz gerek şey 3 eksenimiz bulunur
Bunlar:
“X” ekseni objenizin sağını ve solunu(Yatay)
“Y” ekseni objenizin yukarı ve aşağı(Dikey)
“Z” ekseni ise derinliğini belirtir..
2D bir oyun tasarladığımız için “Z” eksenini kullanmayacağız. Bkz: Resim3
“Transform” komutunun “Translate” fonksiyonunu çağırarak objemizi hareket ettirebiliriz
Kodumuz:
transform.Translate(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0);
transform.Translate
komutu için örnek bir kod:
transform.Translate(Xekseni,Yekseni,Zekseni);
Kodumuzu yazarken mutlaka sonuna “;” işaretini koymayı unutmuyoruz
Sadece fonksiyonlarımızın sonuna “;” koymayız, kod parçacıkları “;” ile biter.
Input.GetAxis
komutu klavyedeki yön tuşlarına bakar.
“Horizontal” ise sağ, sol ok tuşu veya A,D harf tuşlarına bakar.
“Verical” ise yukarı, aşağı ok tuşu veya W,S harf tuşlarına bakar.
Kodumuza tekrar baktığımız da“X” eksenine Horizontal “Y” eksenine Vertical “Z” eksenine ise 0 değerlerini verdiğimizi görebiliriz. (Z eksenini kullanmadığımız için 0 değeri almıştır)
Yazılan kod Bkz: Resim4
Şimdi “Script“imizi “GameObject“imize dahil edelim..
“Project” kısmında bulunan “Script“imizi sürükleyerek “GameObject“imizin “Inspector” penceresine bırakıyoruz. Bkz: Resim5
Karakterimiz uzay boşluğunda düşmesin diye boş bir”GameObject” oluşturuyoruz,
“BoxCollider2D” ekliyoruz ve “Collider” boyutunu Resim6‘daki gibi ayarlıyoruz
Daha sonra çalışma alanımızın üst tarafında bulunan “Play” butonuna tıklayarak oyunumuzu çalıştırıyoruz.
Görüyoruz ki karakterimiz çok hızlı hareket etmek de, bu yüzden hızını kendimiz belirtiyoruz.
“Değişken” terimini öğrenmiştir şimdi bir değişken oluşturalım Bkz: Resim7
Değişken oluşturma Örn: public DegiskenTipi DegiskenIsmi;
“float” parametresi ondalık sayılar için kullanılır (1.5f, 5.2f, 10.7f)
“int” parametresi tam sayılar için kullanılır (5, 10, 24, 17)
“bool” parametresi 1 ya da 0 belirtir (true, false)
En çok kullanılan değişkenlerimiz bunlar, diğer değişken tipleri ise genel de “Component“lerdir.
Kodumuzu değişkenlere atayarak daha düzenli bir hale getirebiliriz Bkz: Resim8
Evet bu dersimizde “Script” bölümüne giriş yaptık.
Takıldığınız herhangi bir yerde yorum kısmın da belirtebilirsiniz.
Bu arada hatalarım veya eksikliklerim olabilir. Bunları belirtirseniz bende düzeltebilirim 🙂
Bir sonra ki ders de görüşmek üzere..