Unity 3D'de Basit Bir Oyun Nasıl Yapılır

Unity 3D, güçlü, kullanımı basit ve en önemlisi indirmek için ücretsiz bir oyun yapma motorudur! (Daha güçlü bir ücretli sürüm var, ancak ücretsiz sürümle çok şey yapabilirsiniz.)

Adına rağmen Unity hem 2D hem de 3D oyunlar için kullanılabilir. Python'a benzer bir dil olan C #, Java veya Boo'da programlama yapabilirsiniz. Bu derste, Unity ortamında size yol göstereceğim ve Unity'de nasıl basit bir oyun yapacağınızı göstereceğim.

Bu Talimat'a uymak için herhangi bir kodlama deneyimine ihtiyacınız yoktur; bununla birlikte, bir tür kodlama diliyle ilgili bir arka planınız varsa, kodunuzu prova etmek için daha kolay bir zamanınız olabilir.

Bu Instructable, Unity web sitesindeki RollaBall eğitimine dayanmaktadır. Unity öğretici web sayfasında bulunan çok sayıda ücretsiz öğretici vardır. Bu Talimat'ı çoğunlukla Unity ile kendi pratiğim için oluşturdum, aynı zamanda video eğitimlerini bir dizi adım adım yazılı talimatla desteklemek için yaptım.

Adım 1: Yeni Bir Proje Oluşturun

Açık Birlik3D

Unity'yi açtığınızda varsayılan olarak açılan "Unity'ye Hoş Geldiniz" penceresini kapatın.

Tıklama Dosyası - Yeni Proje

Projenizin yerini seçin. Tüm Unity projelerimi tutmak için özel bir klasör kullanmayı seviyorum.

Projenizin adını yazın. Ekran görüntüsünde yeni projeye "

Oluştur düğmesini tıklamadan önce bunun nasıl görünmesi gerektiğine ilişkin ekran görüntüsüne bakın.

"Oluştur" u tıklayın.

2. Adım: Düzeni Özelleştirin

Yapmak isteyebileceğiniz ilk şey düzeni özelleştirmektir. Her pencere tıklatıp yerine sürüklenebilir. Alternatif olarak, ekranın sol üst kısmındaki Düzen altındaki açılır çubuğu tıklayarak Unity ile sağlanan varsayılan düzenleri kullanabilirsiniz. Oyun görünümünü Sahne görünümünün altına koymayı yararlı bulmama rağmen, Uzun düzeni seviyorum.

Unity ile çoğu zaman kullandığınız beş ana pencere vardır. Bunlar Sahne, Oyun, Hiyerarşi, Proje ve Müfettiş pencereleridir. Her pencerenin görüntüleri için adımın üst kısmındaki beş resme bakın.

Sahne - oyunun yapıldığı yer burasıdır. Oyununuzda hangi öğelerin bulunduğunu ve birbirlerine göre nerede olduklarını gösterir. Sağ üst köşede sahnenin mekansal yönelimini gösteren bir blok var.

Oyun - oyun oynarken ana kameranın gördüğü görünümü gösterir. Ekranın üst orta kısmındaki Oynat düğmesini tıklayarak oyununuzu bu pencerede test edebilirsiniz.

Hiyerarşi - sahneye eklediğiniz tüm öğeleri listeler. Bu varsayılan olarak ana kameradır. Oluştur'u tıklatıp istediğiniz nesne türünü seçerek yeni öğeler oluşturabilirsiniz. Bu, ekranın üst kısmındaki GameObject açılır menüsünü kullanarak da yapılabilir.

Proje - oyun için kullanılan dosyaları gösterir. Proje penceresinin altındaki Oluştur'u tıklatarak klasör, komut dosyası vb. Oluşturabilirsiniz.

Müfettiş - sahnede bulunan her bir öğenin özelliklerini özelleştirdiğiniz yer burasıdır. Hiyerarşi penceresinde bir nesne seçin veya Özelliklerini Müfettiş panelinde göstermek için Sahne penceresindeki bir nesneyi çift tıklayın.

3. Adım: Sahneyi Kaydet ve Yapıyı Ayarla

Dosya - Sahneyi Kaydet'i tıklayın. Sahneyi [Proje Adı] - Varlıklar klasörüne kaydedin. Varlıklar, sahnelerinizi ve komut dosyalarınızı saklamak isteyeceğiniz önceden hazırlanmış bir klasördür. Varlıklar klasörü dağınık olabileceğinden, Varlıklar içindeki Sahneler adlı bir klasör oluşturmak isteyebilirsiniz.

Sahneyi Sahne veya Ana ya da bunun gibi bir şey olarak kaydedin.

Dosya - Oluşturma Ayarları'nı tıklayın.

Oluşturmak için mevcut sahneyi ekleyin.

İstediğiniz platformu seçin. Bilgisayarlar, oyun sistemleri ve akıllı telefonlar da dahil olmak üzere birçok seçenek var, ancak ilk kez proje oluşturuyorsanız, büyük olasılıkla Web Player veya PC / Mac / Linux Bağımsız'yı seçmek isteyeceksiniz.

Oluşturma Ayarları penceresinin altındaki Oynatıcı Ayarları'nı tıklayın. Bu, Müfettiş'teki Oynatıcı Ayarları seçeneklerini açar. Burada şirket adını, ürün (oyun) adını, varsayılan simgeyi vb. Değiştirebilirsiniz.

Oluşturma Ayarları penceresinden kapatın. Oyununuzu bitirmeye hazır olduğunuzda buna geri döneceksiniz.

4. Adım: Sahne Alanı'nı oluşturun

Unity'de bir sahne oluşturmanın en basit yolu küp eklemektir.

Bunu yapmak için Oyun Nesnesi - Başka Oluştur - Küp'e gidin veya Hiyerarşi penceresindeki Oluştur menüsünü kullanın. Bir küp ekleyin.

Inspector panelinde “Transform” öğesini sağ tıklatarak küpün dönüşümünü sıfırlayın. Yeni bir Oyun Nesnesi oluşturduğunuzda bunu yapmak iyi bir uygulamadır.

Hiyerarşide küpü seçin. Hiyerarşi'de adını çift tıklatarak veya Denetçi panelini kullanarak “Duvar” olarak yeniden adlandırın.

Uzun ve duvara benzer hale getirmek için küpü X yönünde ölçeklendirin.

Hiyerarşi panelinde "Duvar" ı sağ tıklayın ve üç kez çoğaltın, böylece dört duvarınız olur. Görünüşe göre sadece bir duvarınız var, çünkü bunlar aynı ve uzayda aynı noktayı işgal ediyorlar. Bunları konuma sürükleyin ve / veya arenaya benzeyen bir düzenleme yapmak için her küp için dönüştürme seçeneklerini kullanın.

Not: Sahne görünümüne bakmak için, kaydırmak için orta fare düğmesini tıklayın ve yakınlaştırmak ve uzaklaştırmak için kaydırın. Görünümü döndürmek için ALT tuşunu basılı tutarak tıklayın ve sürükleyin.

Ekranın üst kısmındaki Oyun Nesnesi açılır menüsünü (Boş Oluştur) kullanarak boş bir Oyun Nesnesi oluşturun. "Sahne" deyin. Dönüşümünü sıfırlayın.

Dört “Duvar” ın hepsini seçin ve “Sahne” Oyun Nesnesi altına sürükleyin.

Hiyerarşi panelinde Oluştur'u seçerek bir düzlem Oyun Nesnesi ekleyin ve bunu zemin için kullanın. "Floor" olarak yeniden adlandırın ve Hiyerarşideki Sahne Alanı'nın altına sürükleyin.

Not: Yeniden adlandırdıktan sonra enter tuşuna basmanız gerekir, aksi takdirde değişiklik etkili olmayabilir.

Dört duvarla düzgün bir şekilde hizalanmasını sağlamak için zemine Y yönünde -0.5 dönüşümü verin.

Zemin ölçeğini, duvarları boyutlandırmak için kullandığınız ölçeğin 1/10 X, Y ve Z yönlerinde yapın.

5. Adım: Oynatıcıyı Oluşturun

Unity Store gibi çeşitli yerlerden çevrimiçi olarak karakterleri indirebilirsiniz, ancak bu öğretici için oynatıcı için yerleşik Oyun Nesnelerinden birini kullanacağız.

Oyun Nesneleri - Diğer Oluştur - Küre'ye gidin.

Hiyerarşide küreyi seçin ve “Oyuncu” olarak yeniden adlandırın. Dönüşümünü sıfırlayın.

Şimdi fiziğe ihtiyacımız var. Oynatıcı seçiliyken Müfettiş panelinin altındaki Bileşen Ekle'yi tıklatarak oynatıcıyı fizik yasalarına tabi kılın. Fizik Ekleme - Rigidbody. Tüm varsayılan ayarları değiştirmeyin.

Her nesnenin Müfettiş'te görebileceğiniz çeşitli “bileşenler” ile geldiğini göreceksiniz. Her küpün, kürenin vb. “Çarpıştırıcı” adı verilen bir bileşeni vardır. Bu, ekranın, nesnenin yer kapladığı düşünülen fiziksel alandır. Bir çarpıştırıcıyı kapatırsanız, nesne bir hayalet gibi olur, diğer nesnelerden geçebilir. (Oynatıcının çarpıştırıcı bileşenini kapattığınızda neler olduğuna ilişkin videoya bakın.) Bileşen adının yanındaki kutuyu işaretleyerek ve işaretini kaldırarak bileşenleri açıp kapatabilirsiniz.

6. Adım: Oynatıcıyı Hareket Ettirmek

Hiyerarşide oynatıcıyı seçin.

Her bir bileşenin adının solundaki aşağı okları tıklayarak Denetçide açık görmek istemediğiniz bileşenleri simge durumuna küçültün. Bu, çalışma alanınızı biraz temizleyecektir.

Denetçi penceresinin altındaki Bileşen Ekle'yi tıklayın. Yeni Komut Dosyası'nı seçin, komut dosyasına "PlayerController" gibi bir ad verin ve bir programlama dili seçin. CSharp kullanıyorum. Oluştur ve Ekle'yi tıklayın.

Dosyaları düzenli tutmak için Proje penceresinde Varlıklar klasörünü açın ve Komut Dosyaları adlı bir klasör oluşturun. Yeni komut dosyanızı bu klasöre yerleştirin.

Komut dosyasını düzenlemek üzere açmak için, Denetçide komut dosyasının adını çift tıklatın veya Proje penceresinden açın. Bu MonoDevelop adlı bir programlama ortamı açar.

Not: Bu ilk kez kodlamanızsa, bunun gerçekten nitpicky olabileceğini bilmelisiniz. Yazım, durumlar ve açılış ve kapanış parantezleri, parantezler, süslü parantezler, alıntılar vb. İle tutarlı olduğunuzdan emin olun. Ayrıca, bir kod satırının sonunda noktalı virgül bulunmamasından kaynaklanan hatalara dikkat edin.

Kodunuzda varsayılan olarak zaten iki bölüm bulunmalıdır: void Start () ve void Update (). Start, nesne oyuna girer girmez çalışır ve nesne oyundayken güncelleme sürekli çalışır. Fizikle ilgili protokolleri işlemek için FixedUpdate adlı üçte birini ekleyeceğiz. Şöyle görünmelidir:

 void FixedUpdate () {} 

Komutları girmeden önce değişkenleri bildirmemiz gerekir. Bu, sayfanın üst kısmına doğru, Public Class PlayerController (veya benzeri) öğesini izleyen süslü parantez içinde yapılır: Monobehaviour, ancak void Start () işlevinden önce. Hareket için, karakterimizin arenada hareket etme hızını belirlemek için ayarlayabileceğimiz “hız” adlı bir değişken kullanacağız. Değişken türünü (kayan nokta) ve adı (hız) şu şekilde bildirin:

 halka açık hız; 

Noktalı virgül, programa bunun kod satırının sonu olduğunu bildirir. Her kod satırının / satırlarının sonuna noktalı virgül eklemeyi unutursanız hata alırsınız, bu yüzden bunu dışarıda bırakmayın!

FixedUpdate altında, iki şamandıra daha bildirin, moveHorizontal ve moveVertical. Bunlar, kullanıcının klavye komutlarına bağlı olarak değerleri alır ve FixedUpdate bunları her karede günceller.

 float moveHorizontal = Girdi.GetAxis (“Yatay”); float moveVertical = Girdi.GetAxis (“Dikey”); 

Vaka önemlidir.

Yine de FixedUpdate içinde, 3B alanda nesneleri hareket ettirmek için yararlı olan üç boyutlu bir değişken türü olan yeni bir Vector3 oluşturun. Bu, yatay ve dikey hareket için kullanıcının giriş değerini alır ve yukarı / aşağı yönde sıfır olacaktır, çünkü bu oyunda oyuncu sadece iki boyutta hareket edebilir.

 Vector3 hareketi = yeni Vector3 (moveHorizontal, 0.0f, moveVertical); 

Son olarak, sert gövdeyi kullanarak müzikçalarda hareket ettirmek için bir kuvvet girin.AddForce, oyuncunun sert gövdeli bileşenine yerleşik bir protokol.

 rigidbody.AddForce (hareket * hız * Time.deltaTime); 

Time.deltaTime hareketi daha pürüzsüz hale getirmek için kullanılır. Hız değişkenini daha sonra Unity editöründe ayarlayacağız.

CSharp dosyasını kaydedin ve Unity'ye geri dönün.

Oynatıcı için Müfettiş paneline gidin ve az önce oluşturduğunuz hareket komut dosyasına bakın. Genel değişkeniniz, hızınız için bir kutu olmalıdır. Müfettiş'i kullanarak genel değişkenlerin değerini değiştirebilirsiniz.

Şimdilik, hızı 100-1000 arasında bir sayıya eşitleyin ve ekranın üstündeki ortasındaki oynat düğmesini tıklayın. ASWD veya ok tuşlarını kullanarak Unity'nin varsayılan hareket tuşlarını kullanarak topu hareket ettirebilmelisiniz.

Test modundan çıkmak için oynat düğmesine tekrar tıklayın.

Adım 7: Aydınlatma Ekleyin

Boş bir Oyun Nesnesi oluşturun ve buna “Işıklar” deyin. Bunu üst araç çubuğunda GameObject'i tıklayıp "boş oluştur" u seçerek yapın.

Hiyerarşi panelindeki "oluştur" araç çubuğundan seçeneği belirleyerek yönlü bir ışık oluşturun. "Ana Işık" olarak adlandırın. Hiyerarşide Işıklar oyun nesnesine sürükleyerek Işıkların alt nesnesi yapın. Bu, bir dosyayı bir klasöre koymak için benzer bir kavramdır.

Ana Işık seçiliyken, Gölge Türü'nü “Yumuşak Gölgeler” ve Çözünürlük “Çok Yüksek Çözünürlük” olarak değiştirerek Denetçi panelindeki ışık ayarlarını değiştirin.

Müfettiş panelinde, ana ışığın dönüşünü arena üzerinde aşağıya gelecek şekilde değiştirin. 30X, 60Y, 0Z kullandım.

Hiyerarşi panelindeki Ana Işığı sağ tıklatarak çoğaltın. Kopyaya "Dolgu Işığı" adını verin ve Işıklar altında altlayın.

Rengi açık mavi bir renk tonuna değiştirip Yoğunluk alanını 0, 1'e (Müfettiş'te) düşürerek Dolgu Işığının yoğunluğunu nemlendirin.

Gölgeleri “Gölgeler Yok” olarak değiştirin.

Doldurma Işığı'nı ana ışığın ters yönüne çevirin. Benim için bu (330, 300, 0) idi.

Adım 8: Kamera Açısına ince ayar yapın

Kameranın arenaya açılı olmasını istiyoruz, bu yüzden Hiyerarşi'de Ana Kamerayı seçin ve kamera önizlemesindeki görüntü (Sahne panelinin sağ alt kısmı, kamera seçiliyken) iyi görünene kadar dönüşümünü ayarlayın.

Konum için (0, 10.5, -10) ve dönüş için (45, 0, 0) kullandım.

İsterseniz kamerayı sahne görünümünde sürükleyebilirsiniz.

Adım 9: Kamerayı Oynatıcıyı Takip Edin

Kameranın hareket ederken oynatıcıyı ekranın etrafında takip etmesini istiyoruz. Bu amaçla, Müfettiş panelindeki Ana Kameraya yeni bir komut dosyası bileşeni ekleyerek “cameraMovement” adlı bir komut dosyası oluşturun. MonoDevelop'da açmak için komut dosyasına çift tıklayın.

Bu komut dosyası başka bir Oyun Nesnesi olan oynatıcıya erişecektir, bu nedenle komut dosyasının Start () işlevinden önce bunu yazarak bildirmeniz gerekir.

 halka açık GameObject oynatıcı; 

Yazarak “ofset” adında bir Vector3 oluşturun

 özel Vector3 ofseti; 

Start () işlevi altında, ofset değerini

 = Transform.position ofset 

kameranın (x, y, z) konumudur.

LateUpdate () adlı bir işlev altında, kameranın konumunu oynatıcının konumu artı bir miktar ofset olarak tanımlayın:

 void LateUpdate () {transform.position = player.transform.position + ofset;} 

Komut dosyasını kaydedin ve Unity'ye geri dönün.

CameraMovement komut dosyasında tanımladığımız "oynatıcıya" bir Oyun Nesnesi atamamız gerekiyor. Ana Kamerayı seçin ve Müfettiş paneline bakın. CameraMovement komut dosyasının altında “Oynatıcı” adında bir kutu olmalıdır. Şu anda Yok'a (GameObject) atanmıştır. Oynatıcı oyun nesnesini cameraMovement komut dosyasına atamak için Oynatıcıyı Hiyerarşi'den bu kutuya sürükleyin.

Yeni komut dosyasını, Varlıklar altında oluşturduğunuz komut dosyaları klasörüne (Proje panelinde) sürüklediğinizden emin olun.

Ekranın üst kısmındaki oynat düğmesini tıklayarak oyunu deneyin. Oynatıcıyı ok tuşlarıyla hareket ettirebilmelisiniz ve kamera hareketinizi takip etmelidir.

Sahneyi kaydedin ve projeyi kaydedin.

10. Adım: Öğeleri Oluşturun

Yeni bir Oyun Nesnesi oluşturun. Bir küre, bir küp, bir kapsül veya bir silindir olabilir. Bir küp kullandım.

"Eşya" deyin.

Etiketler'i seçip “item” adlı yeni bir etiket oluşturarak Öğeyi “item” olarak etiketleyin, ardından o oyun nesnesi için Tags'e dönüp oluşturduğunuz yeni "item" etiketini seçin. Tüm öğelerinizi öğe olarak etiketleyin. Yazım ve büyük / küçük harfleri tam olarak eşleştirdiğinizden emin olun.

Öğeyi, “Öğeler” adlı boş bir Oyun Nesnesine yerleştirin.

Dönüşümlerini sıfırlayın.

Öğeye katı bir gövde ekleyin.

Öğeyi birkaç kez çoğaltın ve kopyaları arenaya yerleştirin.

Adım 11: Oyuncunun Eşyaları Toplamasını ve Puanını Göstermesini Sağlayın

Oyuncu hareket nesnesini, Oyuncu oyun nesnesi seçili olarak Müfettiş panelinden açın ve oyuncunun topladığı öğeleri toplamasına ve takip etmesine izin vermek için komut dosyasını değiştirin.

İki bildirimde bulunun: biri skorunuzu takip eden bir değişken, diğeri ise skorunuzu sahne görünümünde görüntüleyecek bir GUI metnidir.

 özel int sayısı; genel GUIText countText; 

Void Start () işlevi altında count ve CountText öğelerini başlatın, daha sonra yazacağımız bir işlev.

 sayısı = 0; CountText (); 

Player Öğelerle çarpıştığında ne olacağı için yeni bir işlev yazın. Bu, kendi void Start () ve void Update bölümleri gibi kendi bölümü olmalıdır.

 void OnTriggerEnter (Diğer çarpıştırıcı) {if (other.gameObject.tag == “item”) 
 {Other.gameObject.SetActive (yanlış); 
 sayısı = 1 + sayısı; 
 CountText ();} 
 } 

GUI ekranındaki puanı güncelleyecek CountText işlevini yazın.

 CountText () {countText.text = "Count:" + count.ToString (); 
 } 

Kodu kaydedin ve Birliğe geri dönün.

Tüm öğelerinizi seçin, öğe olarak etiketlendiğinden emin olun ve Müfettişin Kutu Çarpıştırıcısı bileşenindeki “Tetikleyicidir” düğmesini işaretleyin.

Ayrıca rijit gövdenin altındaki “Kinematik mi” düğmesini de kontrol edin. Bu, esas olarak yerçekimini kapatarak eşyalarınızın yere düşmesini önler.

CountText için, Hiyerarşi altındaki Oluştur seçeneğini kullanarak yeni bir GUI (grafik kullanıcı arayüzü) Metni oluşturun.

GUI Metninin dönüşümünü (0, 1, 0) olarak ayarlayın ve Inspector panelindeki GUIText bileşeninde (10, -10) piksel ofseti verin.

GUI Metnini, Oynatıcı seçiliyken Inspector'daki Metni Say kutusuna sürükleyin.

Adım 12: Tehlikeler Yaratın

Bu görülmesi zor paneller, oyuncuyu havaya fırlatır ve muhtemelen arenanın kenarından geçirir, bu durumda oyun biter. Tehlike yapmak, eşya üretmeye benzer bir süreçtir.

“Tehlikeler” adlı yeni bir boş oyun nesnesi oluşturun.

Yeni bir Dörtlü oluşturun ve ona “Tehlike” deyin.

Tehlike olarak etiketleyin ve “Tetikleyicidir” seçeneğini işaretleyin.

Müfettiş'te Mesh Oluşturucu'yu seçerek, tehlike seçiliyken rengini değiştirin ve malzemesini değiştirin. Malzemeler açılır menüsünü tıklayın ve tehlike için varsayılan gri olandan farklı bir malzeme seçmek üzere kutunun sağındaki küçük gri daireyi kullanın. Önceden takılmış beyaz bir malzemem vardı, bu yüzden kullandım.

Tehlikenin dönüşünü X ekseni hakkında 90 olarak değiştirin ve Y yüksekliğini -0, 4'e düşürün, böylece arena zemininin hemen üzerinde yatan küçük beyaz bir kare olur.

OnTriggerEnter () işlevi altındaki Player komut dosyasını düzenleyin, böylece oynatıcının çalıştığı nesnenin bir öğe değil, bir tehlike olma olasılığını hesaba katar. Tehlikeye çarpması durumunda oyuncuya zıplamasını söyle.

 void OnTriggerEnter (Diğer çarpıştırıcı) {if (other.gameObject.tag == "item") {other.gameObject.SetActive (false); saymak = saymak + 1; CountText (); } if (other.gameObject.tag == "hazard") {other.gameObject.SetActive (false); Vector3 atlama = yeni Vector3 (0.0f, 30, 0.0f); adddForce (atlama * hız * Zaman.deltaTime); } 

Kodu kaydedin, Birlik düzenleyicisine geri dönün ve tehlikeyi birkaç kez çoğaltın.

Tehlikeleri arenaya yerleştirin ve oyunu deneyin!

İlgi̇li̇ Makaleler