26 Mart 2014 Çarşamba

RIGIDBODY (Yerçekimi) COMPONENT

RIGIDBODY COMPONENTI

Yeniden birlikteyiz bugünkü dersimizde bir classı sınıfı ve aynı zamanda unity3d de çok önemli bir yere sahip olan  nesnelerin fiziki yapısını içine alan rigidbodyi her yönüyle inceleyeceğiz.


Şekildeki gibi bir küp oluşturduktan sonra oyunumuzu başlattığımızda küpün yerinden oynamadığını sabit bir şeklide durduğunu yer çekimi kuvvetinden etkilenmediğini görüyoruz.
Tahmin edebileceğiniz üzere rigidbody componenti ekleyerek yer çekimi etkisi yaratabiliriz küp objesi içinbunun için küp objesine tıklayarak şekildeki adımları takip edelim.

Oyunumuzu tekrar başlattığımızda küpün yer çekiminden etkilendiğini ve yere düştüğünü görürüz.Rigidbody sadece yer çekimini getirmez belli başlı fizik unsurlarını  da beraberinde getirir.

Gördüğümüz gibi rigidbody componentinde birçok seçenek bulunmakta bunlardan mass isimli en yukarıda ki seçenek objemizin ağırlığını belirlememizi sağlar.Drag sürükleme yavaşlatma anlamındadır ve nesneyi bir paraşüt açmış havasına sokar yavaş yavaş yere doğru indirir yani hava sürtünme kuvvetini artırır.Değeri ne kadar artılırsa sürtünme o kadar artar. Angular Dragın farkı ise düşerken dönme açılarını da düşürmek yavaşlatmaktır.

Use Gravityi bizim yapmaya çalıştığımız şeydir yani yer çekimi bu seçenekteki tiki kaldırırsak yer çekimi yokmuş gibi davranır objemiz.objemiz. Kinematic özelliği ise daha çok animasyonlarda işe yarar ve insanların veya cisimlerin eklem yerlerindeki fizik olaylarının doğru çalışmasını sağlar.İnterpolate i şuan anlatmayacağım kullamanız lüzumsuz olan bir seçenek.Collision Detection objenin diğer bir objeyle karşılaşığında çarpması yada devam etmesi seçeneklerini barındırır.

19 Mart 2014 Çarşamba

Unity 3D Game Object-Component İlişkisi

GameObject - Component İlişkisi

GameObject

GameObject’ler Unity’nin en önemli parçasıdırlar. Bir GameObject’in ne olduğunu ve nasıl kullanıldığını anlamak çok önemlidir. Bu bölüm size bunu açıklayacaktır.

GameObject Nedir?

Oyununuzda yer alan her bir obje bir GameObject’tir. GameObject’ler tek başlarına hiçbir şey yapamazlar. Bir GameObject; bir karakter, ağaç veya özel efekt olmadan önce üzerinde özel ayarlamalar yapılmalıdır. Ama az önce saydığım şeyler birbirinden oldukça farklı şeylerdi diye düşünebilirsiniz. Örneğin sabit (static) bir oda objesini bir kuş objesinden farklı kılmayı nasıl başarabileceğimizi merak edebilirsiniz. Evet o hâlde bu GameObject’leri birbirinden farklı kılan şey nedir?

Bunun cevabını şöyle verebiliriz: GameObject’ler birer taşıyıcıdırlar. Onlar boş birer kutudurlar ve bizler bu kutunun içine değişik parçalar sokarak bir ada ya da fiziksel bir araba oluştururuz. O yüzden GameObject’leri gerçekten anlamak için bu parçaları da anlamalısınız, biz bu parçalara Unity’de Component (Parça) diyoruz. Nasıl bir obje oluşturacağınıza bağlı olarak, bir GameObject’in içerisine değişik Component’ler atayarak farklı farklı kombinasyonlar kurarsınız. GameObject’i boş bir tencere olarak düşünün ve Component’leri de bu tencereye koyduğunuz farklı farklı içerik olarak düşünün. Unity’nin içerisindeki hazır Component’leri kullanabileceğiniz gibi script yazarak kendi Component’lerinizi de oluşturabilirsiniz.

Konuya ısınmaya başladıysanız biraz daha detaya inmeye hazırız demektir.

1) GameObject - Component İlişkisi

Az önce de söylediğimiz gibi, GameObject’ler çeşitli Component’ler içerirler. Şimdi bu ilişkiyi, GameObject’i ve en yaygın Component’i olan Transform Component’ini inceleyerek daha yakından göreceğiz. Unity’de herhangi bir sahnedeyken yeni bir GameObject oluşturun (Kısayol tuşu CTRL+Shift+N, Mac’deyse Command+Shift+N), oluşturduğunuz bu GameObject’i seçin ve ardından Inspector paneline dikkatinizi verin.
Yukarıda boş bir GameObject’in Inspector’daki görünümü verilmiştir. Bir GameObject’in boş olmasına rağmen yine de bir isme (Name), Tag’a (Etiket) ve Layer’a (Katman) sahip olduğuna dikkat edin. Ayrıca buna ek olarak her GameObject, oluşturulduğu anda bir Transform Component’ine sahip olur.

Transform Component’i

Unity’de Transform Component’ine sahip olmayan bir GameObject oluşturmanız imkansızdır. Transform Component’i en önemli Component’lerden biridir. Bu Component, GameObject’in 3 boyutlu uzaydaki konumunu (position), yaptığı açıları (rotation) ve boyutunu (scale) ifade eder. Eğer bir GameObject’in içerisinde Transform Component’i yoksa o GameObject sadece bilgisayarın hafızasındaki bir bilgidir. O GameObject kesinlikle 3 boyutlu dünyada yer almaz.
Transform Component’i ayrıca Parenting adında bir konsepti de mümkün kılar. Bu işlemi UnityEditor’den yaparsınız. Parent atama işlemi GameObject’lerle çalışırken sık sık kullanacağınız, çok önemli bir işlemdir. Transform Component’i ve Parent atama işlemi hakkında daha detaylı bilgi için Unity’nin kendi kılavuzuna bakabilirsiniz.

Diğer Component’ler

Transform Component’i her GameObject’te bulunur ve bu yüzden çok önemlidir. Ancak bir GameObject bunun dışında başka Component’lere de sahip olabilir.
Yukarıda, yeni bir sahne oluşturduğunuzda otomatik olarak oluşturulan Main Camera objesinin Component’lerini görüyorsunuz. Bu resme bakarak Main Camera GameObject’inin Camera, GUILayer, Flare Layer ve Audio Listener olmak üzere çeşitli Component’lerden oluştuğunu fark etmişsinizdir. Tüm bu Component’ler o GameObject’e bir takım fonksiyonellik verir. Onlar olmadan, oyuncuya bir görüntü verecek render işlemi gerçekleşmezdi!

2) Component Kullanımı

Component’ler, oyununuzda yer alan objelerin bel kemiğidirler. Onlar GameObject’leri fonksiyonel kılmaya yarar.

Daha önce de bahsettiğimiz gibi; bir GameObject, çeşitli Component’leri barındıran bir taşıyıcıdır. Başlangıçta otomatik olarak tüm GameObject’lerde Transform Component’i bulunur. Bunun sebebi de Transform’un, o objenin konumunu, yaptığı açıları ve boyutunu ifade etmesidir. Transform Component’i olmadan bir GameObject 3 boyutlu uzayda yer alamazdı. Şimdi boş bir GameObject oluşturun. Bunun için menüden GameObject -> Create Empty yolunu izleyebilirsiniz. Oluşturduğunuz GameObject’i seçin ve Inspector paneline bakın.
Inspector panelini bir GameObject’e hangi Component’lerin atandığını görmek için kullanabilirsiniz. Component’ler silindikçe ya da atandıkça bu işlem aynı zamanda Inspector panelinde de gözükür. Inspector panelini kullanarak Component’lerin herhangi bir özelliğini değiştirebilirsiniz. (Buna scriptler de dahildir.)

Yeni Component Eklemek (Atamak)

Bir GameObject’e yeni bir Component eklemek için Components menüsünü kullanırsınız. Az önce oluşturduğumuz GameObject’e bir Rigidbody Component’i (Katı cisim yapmaya yarayan, yerçekimi gibi fizik kurallarını bir objeye uygulamak için gerekli olan Component) ekleyerek bu işlemi öğrenelim. Objenizi seçin ve menüden Component -> Physics -> Rigidbody seçeneğini seçin. Bunu yaptığınızda Inspector panelinde Rigidbody’nin özelliklerinin belireceğini fark edeceksiniz. Eğer şimdi Play butonuyla oyununuzu test ederseniz küçük bir sürprizle karşılaşacaksınız. Bunu deneyin ve bir Component’in GameObject’i nasıl fonksiyonel kıldığını görün. (GameObject’inizin y eksenindeki koordinatı azalacaktır. Bunun sebebi Unity’nin fizik motorunun GameObject’i artık bir yerçekiminin etkisi altına almasıdır.)
Bu resimde Rigidbody Component’i eklenmiş GameObject’i görebilirsiniz. Tek bir GameObject’e dilediğiniz kadar Component ekleyerek değişik kombinasyonlar uygulayabilirsiniz. Bazı Component’ler başka Component’lerle kombine edilince en iyi çalışırlar. Örneğin, Rigidbody ile Collider Component’leri beraber çalışırlar. Rigidbody, NVIDIA PhysX fizik motoru vasıtasıyla objenin Transform Component’ine etki ederken Collider de Rigidbody’nin çeşitli objelerle etkileşime geçmesini sağlar. Başka bir kombinasyon örneği de partikül sistemidir. Bu sistem Particle Emitter, Particle Animator ve Particle Renderer Component’lerini kombine ederek hareketli partiküller oluşturur.

Herhangi bir Component hakkında çok daha detaylı bilgi almak için Unity’nin kendi kılavuzuna göz atabilirsiniz. Ayrıca Inspector’dayken bir Component’in isminin sağındaki soru işaretli simgeye tıklayarak da o Component hakkında yardım alabilirsiniz.

Component’leri Düzenlemek

Component’lerin en güzel özelliklerinden birisi de esneklik sunmalarıdır. Bir GameObject’e Component atadığınızda Inspector panelinde o Component’in çeşitli özellikleri (Properties) belirir ve bu değerleri gerek Inspector’dan, gerek oyun sırasında scriptler vasıtasıyla istediğiniz gibi değiştirebilirsiniz. Burada 2 çeşit özellik bulunmaktadır: Değerler (Value) ve Referanslar.

Alttaki resme bakın. Bu, Audio Source Component’i eklenmiş boş bir GameObject’tir. Resimde gördüğünüz değerler varsayılan değerlerdir.
Bu Component tek bir Referans özelliği ve yedi adet Değer özelliği içermektedir. Audio Clip (Ses Klibi) özelliği referanstır. Bu Audio Source Component’i çalıştığında, Audio Clip’te referans olarak gösterilen klibi çalacaktır. Eğer referans belirtilmemişse hata verecektir. Buraya bir referans atama işlemini Inspector’dan yapmalısınız. Bunu yapmak içinse Proje panelinden bir ses dosyasını referans kısmına sürüklemek ya da Object Selector’u (Obje Seçici) kullanmak yeterlidir.
Gördüğünüz gibi, şimdi bu Component’imize bir ses klibi (Audio Clip) referans olarak atanmış durumdadır. Component’ler daha farklı türlerde referanslar da içerebilirler, başka Component, GameObject ya da Asset’ler gibi.

Buradaki Audio Clip’in diğer tüm özellikleri birer Value’dir (Değer). Değerleri direk Inspector  üzerinden değiştirilebilir. Audio Clip’in Value özellikleri işaretlenebilir kutucuklardan, nümerik değerlerden, açılabilir kutucuklardan oluşuyor ancak bir değer ayrıca string (yazı), renk, eğri veya başka türde de olabilir. Bunlar hakkında daha detaylı bilgi Unity kılavuzunda mevcuttur.

Değerlerin Test Edilmesi

Play Mode’deyken (Oynatma Modu) bir GameObject’in herhangi bir değerini Inspector’dan dilediğinizce değiştirebilirsiniz. Mesela farklı yüksekliklerde zıplayabilmenin nasıl olacağını test edebilirsiniz. Eğer bir scriptte Ziplama Yuksekligi adında bir değişken oluşturursanız, Oynatma Modundayken bunun değerini değiştirebilirsiniz ve zıplama tuşuna basıp yaptığınız değişikliğin etkilerini test edebilirsiniz. Ardından Oynatma Modundan çıkmadan bu değeri tekrar değiştirebilir, farkı saliseler içerisinde oyununuzda test edebilirsiniz. Unutmayın, Oynatma Modundan çıktığınızda, Oynatma Modundayken yaptığınız değişiklikler resetlenerek eski değerlerine dönerler. Oynatma Modunda bir özelliğin değerini değiştirerek anlık testler yapabilir, çeşitli ayarlamalar ve kalibrasyonlar uygulayabilirsiniz. Bunu kendiniz de deneyin. Bu özelliği kullandıktan sonra etkileneceğinizi düşünüyorum.

Component’leri Silmek

Eğer bir Component’i silmek istiyorsanız, Component’in ismine sağ tıklayın ve Remove Component
seçeneğini seçin. Ya da alternatif olarak ? işaretinin sağındaki küçük dişli simgesine tıklayabilirsiniz. Bu Component’e ait tüm özellikler de onunla beraber gidecektir ve unutmayın; bu işlemi geri alamazsınız! Bu yüzden o Component’i silmek istediğinizden iyice emin olun.

3) Component - Script İlişkisi

Bir script oluşturduğunuzda ve bu scripti bir GameObject’e atadığınızda script, tıpkı Component’lerde olduğu gibi GameObject’in Inspector panelinde belirir. Bunun sebebi scriptlerin atandıkları zaman birer Component’e dönüşmeleridir, çünkü scriptler de birer özelleştirilebilir Component çeşididirler. Yani anlayacağınız; scriptler, kendi oluşturabileceğiniz Component’lerdirler. Scriptlerin içerisinde, Inspector’da gözükecek özellikleri girersiniz ve script içerisine ne yazdıysanız oyun sırasında bu kod aynen çalıştırılır.

Scriptler hakkında daha detaylı bilgi için Unity’nin kılavuzuna başvurabilirsiniz. Böylece bu bölümün de sonuna geldik. Hazırsanız sonraki bölüme geçebilirsiniz.

12 Mart 2014 Çarşamba

Menülere Devam Ediyoruz Arkadaşlar




Bu dersimizde Assets Menüsünü göreceğiz.Unity3D ‘de assets’ler texture,obje,kod,prefabrik obj. vb. gibi oyun motoru öğelerini kapsayan temel kavramdır.

Assets menüsü altındaki seçenekler şunlardır :


Create ( Oluştur ) : Yeni bir obje , component , kod vb.  öğeler eklememizi sağlar.
Show in explorer ( Sistemde göster ) : Proje dosyalarının bulunduğu ana klasörü windows’da açar.

Open ( Aç ) : Bir assets dosyasını açar.

Delete ( Sil ) : Bir assets dosyasını siler.

Import New Asset ( Yeni asset aktar ) : Programa yeni bir asset dosyası aktarırız.

Import  Package ( Paket aktar ) : Asset dosyaları bazen paket halinde bulunur.Unity3D nin 
hazır paket halinde asset dosyaları vardır.Bu ve bunun gibi paketleri programa aktarmak için bu seçenek kullanılır.

Export Package ( Paket çıkart ) : Programa dahil olan asset dosyalarını export’lar.

Select Dependencies : Öğeleri seçimden kaldırıyor.

Export compressed audio file : Oyundaki ses öğelerini sıkıştırarak çıkarıyor.

Refresh ( Yenile ) : Assets alanını yeniler.

Reimport ( Tekrar aktar ) : Daha önceden import edilen asset klasörüne yeni bir öğe eklediyseniz reimport seçeneği yeni öğeleri tekrar aktarır.

Reimport All ( Hepsini tekrar aktar ) : Tüm asset klasörlerini yeniden aktarır.

Sync Monodevelop Project : Unity3D nin kod editörü olan Monodevelop’u programa senkronize bir şekilde çalıştırır.

4 Mart 2014 Salı

Unity 3D Menüler

Bu haftaki yayınımızda Unity 3D menülerini ve arayüzünü
hızlı bir şekilde tanıtıp ileri ki konularda tasarım yapmaya başlayacağız arkadaşlar.

=================FİLE(DOSYA)==================



New Scene ( Yeni Sahne ) : Oyunumuzu tasarlarken yeni bir sahne oluşturmamıza yarar.Peki “Nedir bu sahne ?” diye sorarsanız ; Oyun için tasarlanmış her bölüme sahne diyebilir.

Open Scene ( Sahne Aç ) : Daha önceden oluşturduğumuz bir sahneyi açmak için kullanılan seçenektir.

Save Scene ( Sahneyi kaydet ) : Oluşturduğumuz sahneyi kaydetmek için kullanılan seçenektir

Save Scene as (Sahneyi Farklı kaydet ) : Oluşturduğumuz sahne daha önce kayıtlıysa ve biz farklı bir isimde
farklı bir yere kaydetmek istiyorsak bu seçenek kullanılır.

New Project ( Yeni Proje ) : Yeni bir Proje oluşturmak için kullanılır. Yeni bir proje oluşturduğumuzda program bulunduğunuz projeyi kapatır ve yeni bir proje oluşturmak için seçenekleri karşınıza getirir.
Open Project ( Proje Aç ) : Daha önceden oluşturduğumuz bir projeyi açmak için kullanırız.

Save Project ( Projeyi Kaydet ) : Projeyi kaydetmek için kullanırız.

Build Settings ( Yapılandırma Ayarları ) : Oyunumuzu tamamladığımızda  Build Settings seçeneği ile
oyunumuzun Platform ( MAC , Windows vs. ) , çözünürlük ve icon vb. ayarlarını yaptığımız seçenektir.

Build & Run ( Yapılandır ve Çalıştır ) : Oyunumuzu tamamladığımızda bu seçenek ile dışa
aktarabiliriz.Aktarım bittikden sonra oyun çalışır.

Exit ( Çıkış ) : Programdan Çıkmamızı Sağlar.


=================EDİT(DÜZEN)=================

Undo ( Geri al ) : Programlar yaptığımız her adımı ‘History’ denen bellekte tutar.Eğer biz yanlış bir adım uyguladıysak yada paşa gönlümüz bir önceki adıma geri dönmek istiyorsa bu seçenek kullanılır.

Undo move to view ( Önceki hareketi göster ) : Bu seçenek sahnenin bakış açısını değiştirdiğimizde Undo yazan yerde belirir.Bir önceki bakış açısına hareket eder.

Redo ( İleri al ) : Tahmin ettiğiniz gibi ‘Undo’ işleminin tersidir.

Cut ( Kes ) : Temel kesme işlemi.

Copy ( Kopyala) : Temel kopyalama işlemi.
Paste ( Yapıştır ) : Temel yapıştırma işlemi.

Duplicate ( Klonlama) : Bu seçenek nesne seçili iken o nesnenin aynısından bir tane daha oluşturur.

Delete ( Sil ) : Temel Silme işlemi.

Preferences ( Tercihler ) : Oyun motoruyla ilgili tercihlerin ( x,y,z axis’lerini temsil eden renkler , FPS default kontroller vb. ) ayarlandığı seçenektir.

Play ( Oynat ) : Projeyi oynat.

Pause ( Durdur ) : Projeyi durdur.

Step ( Adım ) : Bir sonraki Frame’e ilerletmek için bu seçenek kullanılır.

Load selection ( Seçimi Yükle ) : İleri ki derslerde değineceğim.

Save selection ( Seçimi Kaydet ) : İleri ki derslerde değineceğim.

Project Settings ( Proje Ayarları ) : Proje ile ilgili ayarların yapıldığı bölümdür. Menü ve Alan dersleri bittiğinde örnek uygulamalarla UnityScript'i öğrenmeye başladığımızda bu seçeneğin ayrıntılarını göstereceğim.

Render settings : Projemizin gökyüzü,ışıklandır vb. gibi ayarlarını yaptığımız bölüm.Ayrıntılara ileri ki derslerde gireceğiz.

Network Emülation ( Ağ emülasyonu ) : Multiplayer ayarlarının yapıldığı seçenek.

Graphics Emülation ( Grafik emülasyonu ) : Grafik ayarlarının yapıldığı seçenek.(DirectX ver. vb. )

Snap settings : X,Y,Z hareketleri ile ilgili ayarların yapıldığı seçenektir.