6 Mayıs 2014 Salı

Scritpler Devam:Fonksiyonlara Detaylı Bakış

Fonksiyonlara Detaylı Bakış                         

Unity'nin Update() (Güncel, Sürekli yapılan) ve Start() (Başlangıç, Tek seferlik) fonksiyonları  

Unity’nin scriptlerimizi çalıştırmak için kullandığımız fonksiyonları bulunmaktadır. En yaygın olarak kullanılan fonksiyon Update() fonksiyonudur. Her yeni bir script oluşturduğunuzda bu fonksiyon da otomatik olarak scriptin içerisinde yazılı olarak gelir. Ee, bu da demektir ki bu fonksiyon dehşet derecede önemli. Bir bakış atalım.
Yeni bir script oluşturmak    

Yeni bir UnityScript (JavaScript) oluşturmak için üst taraftaki menüden şu yolu izleyin:  
Assets --> Create (Oluştur) -->  JavaScript  
Niçin JavaScript? Unity’nin resmî forumlarında bu konuyla ilgili pek çok tartışma konusu açıldı. Çoğu kişi bu dile JavaScript yerine UnityScript demeyi tercih ediyor, çünkü bu dil tam olarak JavaScript değil, ancak çok benzer yapıda. Ben de bu dili UnityScript olarak adlandıranlardanım.

Bir script oluştururken ‘Assets’ menüsünü kullandığımıza dikkat ettiniz mi? Hatırlayın, bir scripti GameObject’e (Oyun Objesi) atadığınız zaman script sihirli bir şekilde o GameObject’in bir Component’i (Parça) oluveriyordu. Eğer sözlüğü açıp da ‘Asset’ kelimesinin anlamına bakarsanız şu tanımla karşılaşırsınız: "a useful or valuable thing or quality." (Türkçesi: Değerli veya işe yarar, kullanışlı şey). Ve elbette bir script de bir GameObject’i daha kullanışlı (useful) kılar. :)


NewBehaviourScript adında yeni bir script oluşturduk  

Bu yeni UnityScript dosyası Unity’nin arayüzünde yer alan Project (Proje) paneline yerleşti. Varsayılan olarak ismi otomatikman ‘NewBehaviourScript’ olarak ayarlandı.


Scriptin ismini değiştirmek    
Scriptinizin ismini değiştirmek için önce onu mouse ile seçin ve ardından F2 tuşuna basın (MAC OS işletim sistemi kullanıyorsanız Enter tuşuna basın.). Ardından scriptinize ne işe yarayacağını her gördüğünüzde anlayabileceğiniz, açıklayıcı bir isim verin. Bu bir eğitim kılavuzu olduğu için ben kendi scriptimi ‘StudyFunctions’ (EgitimFonksiyonlari) olarak adlandırıyorum. İsim değişikliğini hallettikten sonra Enter tuşuna basarak isim değişikliğini bitirin.

NOT: Scriptlerinizi isimlendirirken, tıpkı değişkenlerde olduğu gibi, Türkçe karakter kullanmayın. Aksi takdirde bir objeye atadığınız scriptinizin Component’ine, başka bir scriptten erişim yapamazsınız, çünkü kodlama dilleri kesinlikle Türkçe karakterleri desteklemez, hata verir. 


Scriptimizi ‘Scripts’ klasörüne taşımak    
1. Sadece scriptinizi mouse ile sürükleyip ‘Scripts’ klasörüne atın.
2. İşte benim scriptim.

NOT: Eğer ki sizde ‘Scripts’ diye bir klasör yoksa telaş yapmayın, çünkü bu klasör projenize isteğe bağlı olarak eklediğiniz hazır paketler vasıtasıyla gelir ve Unity’nin hazır scriptlerini içerisinde barındırır. Kendiniz bir klasör oluşturmak içinse yine Project panelinde, üst taraftaki ‘Create’ (Oluştur) butonuna basın ve ardından ‘Folder’ (Klasör) seçeneğini seçin.                


Unity'nin Inspector paneline bakın    

Project (Proje) panelinde scriptiniz seçiliyken Inspector paneline bakarsanız scriptinizin içeriğini görebilirsiniz.
1. Burada scriptinizde otomatik olarak oluşturulan Update() fonksiyonu bulunmakta.
2. Edit butonuna basarak script editörü vasıtasıyla scriptinizi düzenleyebilirsiniz.

Update(): Sürekli, sürekli ve sürekli "Şunu yap" fonksiyonu

Niçin Update() fonksiyonu otomatik olarak yeni scriptlere eklenir?

Unity oyununuz sırasında her bir karede (frame) otomatik olarak bu fonksiyonu gerçekleştirir.
(Çevirmen Eklemesi): Bir saniye kesinlikle bir kareye (frame) eşit değildir. Bir saniye oyunun hızına göre 30 kare de olabilir, 60 kare de 150 kare de. Bunu unutmayın.
Script Referans Kılavuzu’nu (Scripting Reference Manual) okudukça, çoğu kodun Update() fonksiyonu içerisine yazıldığını görebilirsiniz.

Start(): Tek bir seferlik “Şunu yap” fonksiyonu  

Unity içerisindeki bir başka çok yaygın kullanılan fonksiyon da Start() (Başlangıç) fonksiyonudur. Bu fonksiyon sadece 1 kere çalıştırılır ve uygulanır.
İçerisinde Start() fonksiyonu bulunan ve bir GameObject’in (Oyun Objesi) Component’i (Parça) olan bir scriptteki Start() fonksiyonu, Unity tarafından, o obje oyunun herhangi bir bölümünde oluşturulduğu anda otomatik olarak tek bir seferlik çalıştırılır.                    


Fonksiyon İsimleri  

Kılavuzun ilk bölümlerinde fonksiyonların ne oldukları hakkında ve niçin onlara ihtiyacımızın olduğu hakkında konuşmuştuk.

Şimdi ise nasıl fonksiyon oluşturabileceğinizi aşama aşama göstereceğim.

 Fonksiyon Tanımlamak (Declare)  

Kullanmak istediğiniz herhangi bir fonksiyonu (function) öncelikle tanımlamalısınız. Bunun anlamı nedir? Bunun anlamı siz Unity’e bir dizi kod yazacağınızı ve bu kod dizisine de bir isim vereceğinizi söylemektir. Ardından Unity siz bu fonksiyonu çağırdığınızda tam olarak neyden bahsettiğinizi bilecektir.

Hadi Start() fonksiyonuna bir bakalım. Bu sizin değil, Unity’nin içinde tanımlanmış olan ve otomatik olarak çağrılan bir fonksiyondur. Buna rağmen bu fonksiyonun içindeki kod dizisi tamamen size bağlıdır.

1. Fonksiyonun ismi olan Start()’tan hemen önce bir ‘function’ takısı getirdik. Başa ‘function’ takısını koyman Unity’e yeni bir fonksiyon oluşturmakta olduğumuzu söyler.
2. Fonksiyon ismi olan Start’tan hemen sonra iki parantez “( )” açılır. Bu parantezlerin anlamı, işlevi nedir?  

Bu parantezler bir fonksiyonun parçası olmakla beraber (Yazması zorunlu parçası) bu parantezler sayesinde fonksiyonun içine özel veri (data) girişleri de yapabiliriz.

Şu anda kafanızı parçalayıp ne demek istediğimi kavramaya çalıştığınızı görür gibiyim :) . Madem Start() fonksiyonundaki parantezlerin içerisinde hiçbir şey yazmıyor, o zaman bu fonksiyona hangi veri giriyor ki?
Aslında hiçbir şey yok gibi duruyor değil mi, ancak korkmayın, adım adım bunu açıklayacağım.

3. Fonksiyonun başlangıç noktasına bir tırtıklı parantez ‘{‘ işareti koyulur,
4. Fonksiyonun bitim noktasına da bir tırtıklı parantez ‘}’ koyulur.
 NOT: Fonksiyon tanımlamaları (declaration) göreceğiniz üzere sonlarına ‘;’ (Noktalı virgül) almazlar. Derleyici (compiler) bu sondaki tırtıklı parantezin ‘}’ fonksiyonun bitiş noktası olduğunu anlar.
5. Bu iki tırtıklı parantez (3 ve 4) arasındaki her şey fonksiyonun gövdesini (body) oluşturur, buraya yazılan kodlar fonksiyon çağrıldığı zaman gerçekleştirilir.
NOT: Biraz kişisel bilgiye kaçacak ama olsun. Ben aylar önce ilk defa fonksiyonları öğrenmeye başladığımda bu şeyin nasıl işlediğini anlamak için az daha kendimi paralıyordum. Basitçe belirtmek gerekirse burada neler olup bittiğini bir türlü kafam almıyordu. Sonradan anladım ki fonksiyonlar tekrar tekrar kullanılabilen kod parçalarından ibaretmiş, bu kadar basit. Buna rağmen bir fonksiyonu çağırmak ve içine özel veri girmek hâlâ kafamın basmadığı konulardı; bunun bir diğer nedeni de kitaplar yazıp bu konuda eğitim veren şahsiyetlerin bu konuda hiç detaylı bilgi vermemesiydi. Bu yüzden bu dersleri yazıyorum, çünkü ben bu konuyu anlamaya çalışırken çok zorluklar çektim ve sizin de çekmenizi istemem.

Bir sonraki bölüm, yaşadığım sıkıntıyı yaşamamanız için bu bahsettiğim konuyla ilgili olacaktır.              

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.

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.