29 Nisan 2014 Salı

Scritpler Devam: Scriptlerde Noktasal Yapı (Dot Syntax):

 Scriptlerde Noktasal Yapı (Dot Syntax): İletişim Kurmak  

Scriptimiz bir veriyi depolayan değişkenlere (variable) ve bir işlemi yapmaya yarayan fonksiyonlara (function) sahip. Şimdi sizlere bir GameObject’teki başka Component’lerle (Parça) iletişim kurmayı göstereceğim. Bu konuya sadece burada değineceğim, çünkü Component’ler arası iletişim de scriptlemenin bir parçasıdır. Bunun sayesinde etkileşimler mümkün olur.

Noktalarla işimiz ne?    

Başkaları tarafından yazılmış kodlara bakarsanız, birbirlerinden noktalarla ayrılan çeşitli kelimelerin birer küme oluşturduklarını görürsünüz. Bu da nesi? Oldukça da karmaşık duruyor, değil mi?

Unity’nin kendi dökümanından basit bir örnek vereyim:
transform.position.x  

Yukarıdaki kodun ne işe yaradığıyla ilgili kafanızı yormayın, bunu sonradan öğreneceksiniz. Buradaki amaç noktasal yapıyı göstermekti.

İşte bu yapıya Noktasal Yapı (Dot Syntax) denir.  


UnityScript’in de uyulması gereken çeşitli gramer kuralları bulunmaktadır. İşte size başka bir örnek: Evimin adresi:  USA.Vermont.Essex.22 benimSokagim .Eğlenceli duruyor, değil mi? Çünkü UnityScript’in Dot Syntax gramerini kullandım, posta ofislerinde kullanılan grameri değil. Ancak bahse girerim biraz yakından bakarsanız pekâlâ evimi rahatça bulabilirsiniz.
Başka bir örnek daha. Sizinle Dünya üzerinde rasgele bir yerde buluşsaydık ve sizden gözlüğümü almanızı isteyip şu bilgiyi verseydim:
USA.Vermont.Essex.22 benimSokagim.2nci kat.ofis.masa.orta cekmece.gozluk
Herhalde gözlüğümü bulurken herhangi sorun yaşamazdınız, değil mi?
Yani bu bir adres (Address) mi?
Evet, hepsi bu. Noktasal Yapı (Dot Syntax) basit anlamda bir GameObject’i, Component’i (Parça), değişkeni (variable) veya bir fonksiyonu (function) tanımlamak için kullanılan adrestir

22 Nisan 2014 Salı

Scritpler Devam: Scriptlerde Fonksiyonlar (Function)

Scriptlerde Fonksiyonlar (Function)  

Fonksiyonlar asıl eylemlerin uygulandığı yerdir. Kararlar alınır, işlemler yapılır. Bir scriptin çalışan kısmıdırlar. Bir arkadaşımızla sohbet ederken araya telefonun girdiği örneğimizde; arkadaşımızla “sohbet etmek” fonksiyonunu gerçekleştiriyorduk ancak sonrasında, başka bir fonksiyon olan “telefonla konuşmak” fonksiyonuna geçiş yapmak zorunda kaldık.
Adım, adım, kaçınmak, adım...  
Bir script çalıştırılırken her satır kod düzenli olarak yerine getirilir (işlenir).
Script çalışırken bazı engellemeler çıkabilir (interruption), arkadaşımızla sohbet ederken telefona bakmak zorunda kalmamız gibi. “Arkadaşımızla sohbet etmek” fonksiyonunu (function) gerçekleştiriyorduk ki bir engelleme (interruption) çıktı, telefonun çalması. Artık başka bir fonksiyonu çalıştırmak zorunda kaldık. Bu fonksiyonun da kendine has adımları (davranışları) vardır. Bu engelleyici fonksiyonu tamamladıktan sonra ise “arkadaşla sohbet etme” fonksiyonumuza kaldığımız yerden devam ettik.
Fonksiyon demek mantık demektir
Oyun objeleri (GameObject) pek çok girdi (Input) alabilirler, bir şeyle çarpışmak (temas etmek) (collision) veya kullanıcının bir tuşla girdi sağlaması bunlara sadece basit iki örnek. Bu girdiler belirli bir fonksiyonu, çeşitli eylemleri uygulaması için iş başına çağırırlar. Bu fonksiyonları da scriptlerinizde oluşturursunuz.    


Bir fonksiyonun oluşturulma sebebi defalarca kullanılmasından dolayıdır. Yani aynı işlemleri tek tek her seferinde yazmak yerine o işlemleri tek bir taşıyıcının (container) içine yerleştiririz ve bu taşıyıcıya bir isim veririz. Böylece bir fonksiyonumuz olmuş olur. Bu fonksiyonu bir yerde kullanmamız gerekince de orada fonksiyonun ismini yazarız ve böylece fonksiyon ilgili kısımda işini yapar.

Daha Sonra

İlerleyen zamanlarda bir fonksiyonu nasıl çağıracağınızı göreceksiniz. Şimdilik bilmeniz gereken, bir fonksiyonun belli bir işlem kümesi olduğudur ve fonksiyonların oluşturulmalarının sebebi ise fonksiyona yazılan işlemin defalarca kullanılacak olmasıdır. Yani bir dizi işlemi kendi taşıyıcısına koyup o taşıyıcıya bir isim vererek fonksiyonları oluşturmak epey akıllıcadır, sonradan da bu fonksiyonu; ismiyle dilediğimiz yerde çağırabiliriz.

15 Nisan 2014 Salı

Geçen Haftanın Detayları:Scriptlerde Değişkenler (Variable)

Scriptlerde Değişkenler (Variable)  

Bir değişken (variable) nedir?
Teknik olarak bu, bilgisayarınızın hafızasının; bir bilgiyi barındıran minicik bir parçasıdır. Bir oyun çalışırken bu değişken bilginin (information) depolandığı yeri, miktarını ve türünü sürekli gözetimi altında tutar. Sizin tek bilmeniz gerekense bir scriptte bir değişkenin (variable) nasıl çalıştığını bilmektir ki bu da oldukça kolaydır.

Bir değişken bir posta kutusuna benzer.

Bir posta kutusunun içinde hava haricinde genelde ne olur? Aslında genelde içinde bir şey olmaz, boş olur. Ancak zaman zaman içinde bir şeyler olabilir. Mesela para (maaş çeki), halanızdan bir mektup, bir örümcek vb. Asıl nokta, bir posta kutusunun içindeki şeyin farklı farklı olabilmesi, değişken olmasıdır. Peki, biz de şimdilik bu posta kutularını birer değişken (variable) olarak tanımlayalım.

Bir değişkenin adı  


Size yukarıdaki resmi gösterip de posta kutusunun içerisinde ne olduğunu sorsam heralde ilk söyleyeceğiniz şey “Hangisi?” olurdu. Eğer Ali’nin posta kutusu, kahverengi posta kutusu veya yuvarlak posta kutusu desem tam olarak hangisini kastettiğimi anlayabilirdiniz.  


Scriptlerde değişkenlerle (variable) ilgili yapmamız gereken bir başka şeyse o değişkeni adlandırmaktır. Böylece örneğin benimNumaram isimli değişkende (Veya sizin uygun gördüğünüz başka bir isim) ne depolandığını bulabiliriz.
Biraz daha teknik konuşursak, değişkenler; bilgisayarınızdaki birer hafıza adresleridirler (Memory address)(Türkçe karşılığını tam olarak bilmiyorum.). Ne zaman ki bir değişken kullanırsak bilgisayar tam olarak hafızasının (Memory) hangi kısmına bakarak veriyi bulacağını, depolayacağını bilir.
Değişkenlerin (Variable) tek yaptığı bir verinin yerine geçmektir .


Resmin sol tarafındaki isimlere bakın: Sensitivity (Mouse Hassaslığı) X, Sensitivity Y, vb.? Bunlar bir script’teki değişkenlerin (variable) isimleridirler. Sağdaki sayıları görüyor musunuz? İşte onlar da bu değişkenlerin (posta kutusu) içerisinde depolanan veridirler. Peki bu şey nasıl çalışır?
Sizin myNumber isminde bir değişkeninizin (posta kutusu) olduğunu varsayalım. Bu myNumber değişkeninin (variable) içerisinde ise 9 rakamı depolanmakta (yani posta kutusunun içinde 9 rakamı var.). Şu an bu sayı bir şey ifade etmiyor olabilir, tabi işin içine okulda gördüğünüz cebirsel matematiği koyarsanız işler değişir:
2 + myNumber = ??
Normalde rakamlarla yazıları toplayıp da sonuç elde edemezseniz. Ancak bu yazı bir scriptin içindeki bir değişkense işler değişir. Çünkü değişkenin içerisinde ne depolanmışsa o değer; ilgili rakamla toplanır. Yani bu basit toplama işleminde, 9 rakamı, depolandığı myNumber isimli değişken nerede kullanılırsa oraya yazılır, yani:
2 + 9 = 11
Uzun lafın kısası, script yazarken tanımladığınız değişkenler (variable) basit anlamda; onlara atanan değerler için birer yer tutucudurlar.      

Daha Sonra  

Böylece basit anlamda değişkenleri görmüş olduk. Onlar bir scriptte, istediğiniz herhangi bir veriyi depolamak için kullanılırlar. Değişkenler birden çok türde veri depolayabilirler, örneğin yazılar, sayılar ya da bir GameObject’in (Oyun Objesi) kendisi gibi. Değişkenlerle ilgili değişken söz dizimi (variable syntax) ve bir değişkene veri atamak ve o veriyi kullanmak gibi konuları ise daha sonra öğreneceğiz.

8 Nisan 2014 Salı

GameObject (Oyun Objesi): Scriptler ve Componentler (Parçalar)

Class (Sınıf), Component (Parça) ve Script  

Her şeyden önce, bu kelimelerin ne anlama geldiğini bilmelisiniz. Sonra da bu kelimelerin nasıl kullanıldığını bilmelisiniz. İlkokuldaykenki anılarınıza dönüş yapın ve Edebiyat öğrendiğiniz zamanları hatırlayın. Ne kadar da sıkıcı ders, ancak nasıl yazı yazacağınızı bilmeniz açısından önemli. Belki de bu kelimelerin anlamını zaten biliyor ve script’le ne alakası olduğunu anlamaya çalışıyorsunuz. Ancak bu kelimeler scriptleme aşaması için oldukça önemli ve kavranması kolay terimler.

Bu aşamada bir script’in ne olduğuyla ilgili birkaç basit açıklama yapacak ve bir script’i oluşturan iki elemanı tanıtacağım: variable(değişken) ve function(fonksiyon). Bunları açıklamak için genel, günlük yaşamdan örnekler vererek gerçekte bu terimlerin ne kadar da basit olduğunu göstereceğim. Sonraki aşamalarda ise bu basit konseptleri nasıl kullanacağımızı öğreneceğiz.

Unity GameObject (Oyun Objesi) Referans Linki  

Unity 3D GameObject Örneği

Class (Sınıf): 

Genel Tanım

Class’lar Unity’de önemli bir role sahiptir. Şimdi bir Class nedir bunu göreceğiz ve ileride göreceğimiz diğer terimlerin Class ile olan alakalarını öğreneceğiz. Peki nedir bu Class dediğimiz şey?

Basit cevap – bu herhangi bir şeyin tanımıdır, tıpkı bir sözlükte olduğu gibi.

Mesela sözlüğü açıp da “köpek” ya da “ördek” kelimelerine bakarsanız bir köpeğin ya da ördeğin ne olduğunu öğrenirsiniz. Peki “köpek” kelimesi için sözlükteki tanım ‘köpek’ midir? Elbette hayır, Ancak sözlüğün yaptığı bir köpeğin nasıl göründüğünü açıklamak ve köpeklerin sahip olduğu temel davranışları tanımlamaktır.

Unity cevabı – şöyle bir tanımlamadır:

1) Veri (data) depolamak için kullanılan değişkenlerin (variable) tanımlandığı,
2) Değişkenler (variable) üzerinde işlem yapılmasını sağlayan fonksiyonların (function) tanımlandığı bir terimdir.

Başka bir deyişle, bir Class (Sınıf) şunları tanımlamak için kullanılır:

 1) Birkaç kelime – değişken (variable) adları
 2) Bunların yapabildiği bir şeyler – fonksiyonlar (function)

Component’ler (Parça) ve Scriptler: 

Biraz sihire bulaşalım :)
  
Unity ile çalışırken iki tür şapka giyersiniz:
1) Bir Oyun Tasarımcısı (Game-Creater) şapkası
2) Bir Scriptleme (programcı) şapkası.

Oyun Tasarımcısı şapkanızı giydiğinizde; bir GameObject’i (Oyun Objesi) seçebilir ve bu objeye atanmış herhangi bir Component’in (Parça) özelliklerini (Properties) inceleyebilirsiniz.

Ne zaman ki Scriptleme şapkanızı giydiniz, o zaman işin boyutu değişir:

 - Bir script; bir GameObject’e çeşitli şeyler yaptırmak için yazılır.
 - Bir script kaydedildiğinde, artık o scriptin adı bir Class (Sınıf) adı olur – bir takım değişkenlerin (variable) ve fonksiyonların (function) depolandığı.
 - Bu Class (script dosyası) Project (Proje) dosyanızda depolanır, burada boş boş hareketsiz bir şekilde kullanılmak için bekler.
 - Şimdi Scriptleme şapkanızı çıkarın.

Ardından tekrar Oyun Tasarımcısı şapkanızı giydiğinizde ve Class’ınızı (script dosyası) bir GameObject’e (Oyun Objesi) atadığınızda sihir etkisini gösterir;
Artık Class (Sınıf) (script dosyası) objeniz bir Component (Parça) olarak tanımlanmakta ve Sınıfın (Class); public (genel) değişkenleri (variable) artık Inspector’da (UNITY arayüzündeki, sağdaki parça) göreceğiniz özelliklere (Properties) dönüşecektir.

2 Nisan 2014 Çarşamba

Unity 3d Harita Hazırlama

GAMEOBJECT => TERRAİN ( HARİTA HAZIRLAMA)


Bugün ki yazımızda Unity 3D ile örnek bir harita hazırlayacağız arkadaşlar.İlk olarak File>New Project seçiyoruz.Yeni proje oluşturuyoruz.Menülerden GameObject>Crete Order>Terrain seçiyoruz.Sahneye oluşturacağımız haritayı ekliyoruz.Daha sonra Terrain>Options dan boyutunu ayarlıyoruz.Boyutları ayarladıktan sonra çizmeye başlıyoruz arkadaşlar.Ben videoda örnek bir harita yaptım.Sizinde çizim kabiliyetinize göre daha iyi haritalar yapabileceğinizi söyleyerek yazımı bitiyorum.