Anasayfa » Yazılım » Unity 3D İle Oyun Programlama

Unity 3D İle Oyun Programlama

Unity 3D, oyun yapımı ya da başka interaktif uygulamalar (simülasyon,dijital tasarım vb.) oluşturmak için kullanılan, Unity Technologies’in programladığı bir motordur. Unity iki farklı sürüme sahiptir: ücretsiz sürüm ve Pro sürümü. Ücretsiz sürümde yaptığınız oyunlardan istediğiniz gibi para kazanabilirsiniz ve Unity Technologies’e komisyon da vermeniz gerekmez.

Pro sürümü daha yüksek kaliteli oyunlar yapmak için özel araçlara sahiptir ve ücretlidir. Unity dünya genelinde 500,000+ kişi ve şirket tarafından kullanılmaktadır; örnek vermek gerekirse: Cartoon Network, Coca- Cola, Disney, Electronic Arts, Microsoft, NASA, Amerikan ordusu,Warner Bros ve daha fazlası…

Unity 3D İle Oyun Programlama 1

Unity 3D’yi Nereden Edinebilirim?

Unity’nin son sürümünü şu adreste bulabilirsiniz:  İnternete bağlıyken Unity’i her açışınızda yeni bir sürüm çıkmış mı diye otomatik olarak kontrol yapılmaktadır

İNDİR

Unity’e Giriş

Unity’i ilk açtığınızda otomatik olarak “Angry Bots” projesi açılacaktır (versiyon 3.4’te geçerlidir).Ayrıca belki “Welcome To Unity” ekranı karşınıza gelebilir. Bu ekran Unity’i her açışınızda çıkar. Bunu engellemek için sağ alttaki “Show at Startup” seçeneğini kapatın. Unity açıldığında otomatik olarak Angry Bots’un açılmasını istemiyorum ben. Siz de istemiyorsanız Edit >Preferences… yolunu izleyin.

Unity 3D İle Oyun Programlama 2Unity 3D İle Oyun Programlama 3

Buradan “Show Project Wizard at Startup”ı işaretleyin. Unity’i sonraki açışlarınızda hangi projeyi açmak istediğinizi soran bir pencere gelecek. Şimdi şu linkteki LessonAssets.zip dosyasını indirin:

İNDİR

Projeyi Unity’den Açmak

Unity’de File > Open Project… yolunu izleyin. Bir pencere gelecek. Buradan “Open Other…”butonuna tıklayın ve dosya gezgininde Lesson 1 klasörünün olduğu konuma gelin. Bu konumdayken Lesson 1 klasörüne bir kez tıklayarak onu işaretleyin ve OK butonuna tıklayın.Yani bir proje açarken projenin olduğu ana klasörü seçeceksiniz. Şimdi Unity kapanıp tekrar açılacak. Unity’i sonraki açışlarınızda projenizi listeden seçebilirsiniz:

Unity 3D İle Oyun Programlama 4

Projeyi İşletim Sistemi Üzerinden Açmak

Windows Explorer (Windows)’ı açın. Unity projenizin olduğu klasörü açın. Orada “Assets” ve“Library”adında iki klasör var. “Assets”i açın. Eğer Lesson 1 projesini açıyorsanız “MainScene.unity” adında bir dosya göreceksiniz. Dosyaya çift tıklayın. Proje Unity’de açılacak.

Unity 3D İle Oyun Programlama 5

Unity Arayüzünü Tanımak
Lesson 1 projesini açtıktan sonra Project panelindeki MainScene dosyasına çift tıklayın:

Unity 3D İle Oyun Programlama 6

Unity’nin yeni sürümüyle beraber fark edeceğiniz üzere Project panelinin tipi değişti. Ben resimde gördüğünüz eski Project panelini daha çok seviyorum. Ayrıca ders boyunca da eski tip Project paneli ile çalışıyoruz. Siz de Project panelinin eski tipine dönmek için panelin sağ üstündeki garip ikona tıklayın ve “One Column Layout”u seçin.

Unity 3D İle Oyun Programlama 7

Arayüzdeki bileşenlerin yerleri sizde farklı olabilir. Bunu düzeltmek için Window > Layouts > Tall yolunu izleyin. Artık hepimiz biriz!

Unity 3D İle Oyun Programlama 8

Unity 3D İle Oyun Programlama 9

1. Scene Paneli: Oyun alanını (sahne)(scene) 3 boyutlu görmeye yarar. Unity’de her level bir “scene” olarak adlandırılır.

2. Hierarchy Paneli: Sahnedeki tüm objelerin listelendiği panel. Unity’de objelere “game object” denmektedir.

3. Inspector Paneli: Seçili obje hakkında detaylı bilgiler burada yer alır.

4. Project Paneli: Oyununuzda kullanabileceğiniz tüm kaynak dosyaları burada yer alır. Bunlar3D objelerden tutun resimlere, ses dosyalarına, fontlara kadar pek çok dosya olabilir.

5. Araç Çubuğu: Projenizle etkileşime girmek için çeşitli butonlar.

Sahnede (scene) Gezinmek

Her şeyden önce kontrollere aşina olmalısınız. İmleci Scene paneline götürün. Orta mouse tuşuna basılı tutun ve fareyi kımıldatın. Bu işlem kamerayı hareket ettirmeye yarar. Klavyeden Alt tuşuna ve sol mouse tuşuna basılı tutup fareyi kımıldatın. Bu işlem kamerayı döndürür.Mouse tekerleği ile ya da Alt+sağ mouse tuşu kombinasyonu ile de kameraya zoom yapabilirsiniz.Şimdi kontrollere iyice alışana kadar pratik yapın.

Bir Objeye Odaklanmak

Hierarchy panelinden “Simple Cylinder” isimli objeye tıklayarak onu seçin. Şimdi imleci Scene paneline hareket ettirin. Klavyeden F tuşuna basın. Kamera seçili objeye odaklanacak (focus). Kamera bir objeye odaklıyken onu döndürürseniz (Alt+sol mouse tuşu) kamera objenin etrafında döner. Kamerayı başka yere hareket ettirirseniz artık o objenin etrafında dönmez.

Oyun Alanında Serbestçe Gezinmek

Scene panelinde kameramızla etrafı gezinmenin bir başka yolu da uçarak gezinmek. Sağ mouse tuşu ile Scene paneline basılı tutun ve W-A-S-D tuşlarıyla kamerayı hareket ettirin. Q-E tuşlarıyla kamerayı aşağı-yukarı hareket ettirebilirsiniz. Bu esnada fareyi kımıldatarak kamerayı döndürebilirsiniz.

Objelere (Game Object) Giriş

Unity’de oyun alanında gördüğünüz her şey birer game object’tir.  Bunlara oyundaki karakterimiz  (player), düşmanlar, zemin, duvarlar, ışıklar, arayüzdeki butonlar örnek verilebilir. Game object’ler ile oluşturduğunuz sahnelere scene denir. Oyununuzda birden çok scene olabilir. Bir scene’de ana menü, öteki scene’lerde oyundaki level’lar yer alabilir.

Game Object Oluşturmak

Yukarıdan GameObject > Create Other > Cube yolunu izleyin. Kamera görüş alanınızın tam ortasında bir küp oluşacak. Küp haricinde oluşturabileceğiniz başka hazır modeller de vardı o menüde ama biz şimdilik küp objesine odaklanacağız.

Objeyi Hareket Ettirmek (Move)(Translate)

Unity 3D İle Oyun Programlama 12

Küp objesine tıklayarak onu seçin ve F tuşuna basarak kameranın seçtiğiniz küp objesine odaklanmasını sağlayın. Objenin etrafında kırmızı, yeşil ve mavi renkte üç ok göreceksiniz (eğeryoksa W tuşuna basın ya da araç çubuğundan ilgili ikona tıklayın)

Unity 3D İle Oyun Programlama 13

 

 

Bu oklar objeyi hareket ettirmeye yarar. Kırmızı ok sağa-sola, yeşil ok yukarı-aşağı, mavi ok ileri-geri oynatmaya yarar. Yapmanız gereken objeyi bu oklardan birinden tutup sürükleyerek istediğiniz konuma getirmek. Objeyi serbestçe hareket ettirmek için okların merkezindeki beyaz kutucuktan tutarak sürükleyin

 

 

Objeyi hareket ettirirken Inspector’daki değerlerin değiştiğine dikkat ettiniz mi? Bu değerler objenin 3 boyutlu uzaydaki konumunu belirliyor.Bu kutucuklardaki değerleri istediğiniz gibi değiştirebilirsiniz de…

Unity 3D İle Oyun Programlama 14

X, Y ve Z değerlerini mouse ile de değiştirebilirsiniz. Örneğin imleci X harfinin üzerine getirin ve sol mouse tuşuna basılı tutarak fareyi hareket ettirin.

Unity 3D İle Oyun Programlama 15

Objeleri Döndürmek (Rotate)

Unity 3D İle Oyun Programlama 16

 

Bir obje seçin ve E tuşuna basın(ya da araç çubuğundan ilgili ikona tıklayın)

 

 

Unity 3D İle Oyun Programlama 17

Objeyi çevreleyen üç daire göreceksiniz. İşleyiş hareket ettirme tool’uyla aynı. Bu dairelerden birine basılı tutup fareyi hareket ettirerek objeyi o yönde çevirebilirsiniz. En dıştaki beyaz daireden tutup sürüklerseniz obje kameranın bakış açısı yönünde döner. Test edin ve görün. Döndürme işlemi yaparken Inspector panelinde Rotation değerlerinin değiştiğini görebilirsiniz. Buradaki X, Y ve Z değerleri birer Euler açı (Euler angle)’dır.

 

Objeyi Boyutlandırmak (Scale)

 

Unity 3D İle Oyun Programlama 18

Bir objeyi seçin ve R tuşuna basın (ya da araç çubuğundan ilgili ikona tıklayın).

 

 

Unity 3D İle Oyun Programlama 19

 

Boyutlandırma aracı seçiliyken objenin merkezinden dışarı doğru üç ok çıkar. Ama bu sefer okların ucunda küp sembolü yer alır. Önceden yaptığınız gibi bu oklardan tutup sürükleyerek objeyi boyutlandırabilirsiniz. Merkezdeki beyaz küpten tutup sürükleyerek objeyi her yönde eşit olarak boyutlandırabilirsiniz.

 

 

Global Uzay (World Space) ve Yerel Uzay (Local Space)

Bu safhada iki farklı space’ten bahsetmeyi uygun buldum.Bir objeyi döndürdüğünüzde (rotate) objenin yönünü değiştirmiş oluyorsunuz. Objeye göre “ileri” yön, objeyle beraber dönmüş oluyor. Diyelim ki bir objeyi Y ekseni etrafında (yeşil eksen) 45 derece döndürdünüz. Şimdi obje düz değil çapraz duruyor.

Objeyi bu halde hareket ettirmek istediğinizde bazı okların yönünün değiştiğini farkedeceksiniz. Çünkü objenin kendisinin yönü değişti. Okların yönünün objenin yönüne göre değiştiği bu uzaya Local Space deniyor. Okların yönünün hep sabit olduğu uzaya ise World Space deniyor (bu okların yönü Scene panelinin sağ üstündeki gizmo’daki oklarla aynıdır).Bir objeye Local Space üzerinden işlem yapmak için araç çubuğundaki ilgili kısmın Local olduğundan emin olun:

Unity 3D İle Oyun Programlama 20

Bu buton Global ve Local uzay arasında geçiş yapmaya yarar.

Unity 3D İle Oyun Programlama 22

Snapping (Kenetleme)

Objeyi konumlandırırken, döndürürken ve boyutlandırırken Ctrl tuşuna basılı tutarsanız bu işlemler birim birim gerçekleşir (anlamanın tek yolu kendi başınıza denemek).

Birden Çok Objeyi Seçmek

Unity 3D İle Oyun Programlama 23

Scene panelinde Ctrl veya Shift tuşuna basılı tutarak birden çok obje seçebilirsiniz. Ardından seçili objeleri aynı anda konumlandırabilirsiniz. Hierarchy panelinde de benzer şekilde Ctrl veya Shift tuşuna basılı tutarak çoklu seçim yapabilirsiniz.

 

 

Bir Objenin İsmini Değiştirmek (Bunu yapmanın iki yolu var.)

Hierarchy Panelini Kullanmak

Objeyi Hierarchy panelinden seçin ve F2 tuşuna basın (Mac’te Enter tuşuna).Yeni bir isim verip Enter tuşuyla işlemi sonlandırın.

Unity 3D İle Oyun Programlama 24

Inspector Panelini Kullanmak

Objeyi Hierarchy ya da Scene panelinden seçin. Inspector panelinin tepesindeki ismi değiştirin ve Enter tuşuyla işlemi sonlandırın.

Unity 3D İle Oyun Programlama 25

Bir Objeye Ebeveyn Atamak (Parenting)

Unity 3D İle Oyun Programlama 26

Birden çok objenin gruplandırılmasına Unity’de parenting denir.

 

1. Başka bir objenin içinde gruplandırmak istediğiniz objeyi seçin.Seçtiğiniz bu objeye child obje denir.

 

 

 

 

2. Seçili objeyi gruplandırmak istediğiniz objenin üzerine sürükleyin.Üzerine sürüklediğiniz objeye parent (ebeveyn) obje denir.

 

 

 

 

 

3. Başarılı bir parenting operasyonu gerçekleştirdiniz! Oluşan grubu Hierarchy panelinde farkedebilirsiniz.

 

Bir gruptaki parent objeye uygulanan konumlandırma, döndürme ve boyutlandırma işlemleri aynı zamanda child objelere de uygulanır.

Bir Objeyi Çoğaltmak (Klonlamak)

Objeyi seçin ve Ctrl+D kombinasyonunu uygulayın. Klon obje ile ana objenin özellikleri birebir aynı olacaktır. Klonlanan obje ana objenin üzerinde yer alır. İkisini birbirinden ayırmak için tekini biraz kımıldatın.
Kendinizi Test Edin

Alttaki resimde gördüğünüz gibi bir obje oluşturmaya çalışın. Ardından silindir objelerini küp objesi ile parent’layın.

Unity 3D İle Oyun Programlama 28

Component Terimine Giriş

Unity’de objelere pek çok özellik kazandırabilirsiniz. Kazandırdığınız hemen her özelliğe birer component denmektedir. Component’ler bir objenin ne olduğunu belirleyen parçalardır: objenin nelere sahip olduğunu, nasıl davranacağını belirlerler.Şu ana kadar bir component ile çoktan tanıştınız:

“Transform” componenti. Bu component objenin uzaydaki konumunu (position), eğimini (rotation) ve boyutunu (scale) depolar. Bir obje seçtiğinizde Inspector paneli o objenin tüm component’lerini listeler. Bir 3D objeyi sahnede render’lamak için bir component gereklidir. Bu objenin şeklini fizik motoruna tanıtmak için ise yine başka bir component gerekmektedir.

“Mesh Filter” componenti, game object’in şeklini aldığı 3D modeli belirlemeye yarar. “Mesh Renderer” bu game object’i ekrana çizdirmeye (render) yarar.”Box Collider” componenti ise bu objenin şeklini fizik motoruna tanıtmaya yarar (Box Collider kullanırsanız şekli fizik motoruna bir dikdörtgenler prizması olarak tanıtırsınız).

Fiziksel Etkileşimler: Rigidbody Componenti

Siz Deneyin: Lesson 1 projesinde yer alan “Simple Cylinder” objesini seçin. F tuşu ile ona odaklanın.Objeye Component > Physics > Rigidbody yolunu izleyerek Rigidbody componenti verin.

Unity 3D İle Oyun Programlama 29

Araç çubuğunda şekildeki gibi üç buton göreceksiniz. Bu butonlar oyunu editörde test etmeye yarar.En soldaki buton oyunu başlatır. Ortadaki duraklatır. En sağdaki buton da duraklatılmış oyunu kare kare (frame by frame) ilerletmeye yarar. Durmayın ve soldaki butona basarak oyunu başlatın.

Eğer her şeyi düzgün yaptıysanız oyun başladığında silindirin yere düştüğünü göreceksiniz. İşte rigidbody componenti bu işe yarar: objeye fiziksel kuvvetlerin etki etmesini sağlar.

Play butonuna (soldaki buton) tekrar basarak oyunu durdurun.

Bir Componenti Silmek

Şimdi rigidbody’i objeden silince ne olacağına bakalım. Bir componenti silmek için Inspector panelinden componentin sağ üstündeki dişli ikona tıklayın:

Unity 3D İle Oyun Programlama 30

Gelen menüden “Remove Component” seçeneğini seçin.

Unity 3D İle Oyun Programlama 31

Şimdi tekrar oyunu çalıştırın. Silindirin havada kaldığını göreceksiniz. Artık rigidbody silindirde yer almadığı için silindire fiziksel kuvvetler etki etmiyor (yerçekimi kuvveti gibi).

Light Componenti

Silindir seçili iken Component > Rendering > Light yolunu izleyerek ona Light componenti verin. Bu componenti Inspector’dan incelerseniz çeşitli ayarlar göreceksiniz.

Color’ın sağındaki yere tıklayın. Renk paleti gelecek. Buradan istediğiniz rengi seçin. Rengi değiştirdikçe Scene panelindeki görüntünün de değiştiğini görebilirsiniz.

Unity 3D İle Oyun Programlama 32

Silindire tekrar bir rigidbody eklerseniz artık silindirde hem rigidbody hem de light componenti olduğunu göreceksiniz. Oyunu çalıştırınca obje hem yere düşecek hem de etrafına ışık saçacak.

Unity’nin kullandığı component’lere dayalı dizaynın avantajı burada yatıyor. Herhangi bir objeye herhangi bir component kombinasyonunu uygulayarak objenin istediğiniz gibi davranmasını sağlayabilirsiniz.

Birden Çok Light Eklemek

Ya silindire iki Light componenti eklemek istersek? Durmayın ve deneyin. Malesef bir hata alacaksınız:

Unity 3D İle Oyun Programlama 33

Bir objeye en çok bir tane Light componenti ekleyebilirsiniz. Çoğu component için bu durum geçerlidir.Tıpkı hata mesajının dediği gibi; aynı component’ten tek bir objeye birden çok ekleyemezsiniz.

Bu sorunu nasıl çözeceğiz? İkinci Light componentini depolayacak olan yeni bir obje oluşturacağız. Bu obje görünmez olacak ve bu objeye parent olarak silindir objesini vereceğiz. Silindir objesine (veya herhangi başka objeye) istediğiniz kadar child obje verebilirsiniz.
Unity’de görünmez obje oluşturmak için GameObject > Create Empty yolunu izleyin ya da Ctrl+Shift+N kombinasyonunu uygulayın.

Unity 3D İle Oyun Programlama 34

Özet Geçecek Olursak…

Buraya kadar geldiyseniz tebrikler! Unity ile kendi oyunlarınızı oluşturmak için ilk adımı attınız.Unity’de bir proje açmayı, objeleri konumlandırmayı, component terimini ve görünmez bir obje oluşturmayı gördünüz.

Yazar Mehmet Karaman

Bilişim hizmetleri veren özel şirketlerde çalışmalarım oldu. İlgi alanım Teknoloji, Bilgisayar ve Webmaster . Bilgi paylaşımını seviyorum ve burada sizlere kaliteli konuları sunmaya çalışıyorum. Yazdığım konular hakkında yorum yazabilir görüşlerinizi belirtebilirsiniz.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmelidir *

*