Unity Dersleri 14 – Düşman Ekleme

Unity 3d oyun motoru ile yaptığımız savaş oyunumuzda kuşkusuz en çok ihtiyaç duyacağımız konulardan biri de düşmanlar eklemektir. Oyun yapıp sahnede boş şekilde dolaşmak ve dağa taşa ateş etmek istemeyiz. Doğal olarak farklı düşmanlar ekleyip bu düşmanlarla çatışmak isteyeceğiz. Bu derste unity düşman ekleme konusunu ele alıyoruz…

Unity düşman ekleme konusu kendi içinde farklı partlara ayrılacaktır. İlk olarak sahnemize mixamodan indirdiğimiz hazır bir düşman objesi ile yine mixamodan indirdiğimiz hazır animasyonlar ekleyeceğiz.

İndirdiğimiz bu düşman objesini bu derste ilk olarak sahnede nasıl göstereceğiz konusu ile başlayıp küçük animasyonları nasıl kazandıracağımızı da öğreneceğiz. Ayrıca oyunda bir düşman varsa bu düşman ile çatışmak isteriz. Henüz oyuncumuzun sağlık barı veya eklediğimiz düşmanın sağlık durumuna geçmesek de en azından belirli uzaklıklardan düşmanın bizi görmesi ve bizi gördüğünde farklı animasyonlar çalıştırmasını isteriz.

Örnek olarak düşman bizi gördüğünde bize doğru yürüyebilir, belirli yakınlığa ulaştığında ateş edebilir. Elbette bu derste ateş etmekten kastımız ateş etme animasyonunu oynatmasıdır. Sonraki derslerde düşmanımıza bir yapay zeka da kazandıracağız. Yani şu an için sabit yönde animasyonla birlikte koşma sağlayabilsek de aslında kodlarla bizi sahnede takip edebilmesini sağlamamız gerekecek…

Buna göre düşman ekleme konusunu biraz özetleyelim…

1- Sahneye 3d karakterler eklemek: 

Oyunumuzu yaparken sahnemiz içine zombi, asker, hayvanlar, uzaylılar veya etkileşime girebileceğimiz diğer varlıkları ekleme işlemidir. Başlangıçta içeri obje aktarımından farkı yoktur…

2- Animasyon ekleme:

Eklediğimiz düşmanların ilk olarak bekleme animasyonu yüklenir böylece düşmanımıza hareket kazandırmış oluruz. Dilerseniz bu aşamada seri animasyonlar da verebilirsiniz.

Bekleme animasyonu ile bağlantılı olarak düşmanın belirli bir mesafede yürümesi de sağlanabilir. Ancak bu konuyu ilerleyen zamanlarda farklı bir şekilde işleyeceğiz…

3- Düşman Basit Yapay Zekası

Eklediğimiz düşmanlara başlangıç olarak basit yapay zekalar kodlayabiliriz. Örneğin belirli bir uzaklıktan bizi fark edip bize doğru yönelmesi sağlanabilir. Bize bakan bir düşmanın ne yapacağına da karar vermeniz gerekiyor. Bizi harita içerisinde bulmasını mı tercih ediyorsunuz, bizi belirli bir mesafeden takip etmesini mi yoksa bizi gördüğü an ateş etme gibi farklı bir animasyona geçiş yapması mı?

4- Orta Düzey Yapay Zeka

Burada farklı durumlarda farklı şartların çalışması örnek olarak verilebilir. Tamamen ruhsuz bir şekilde bize doğru ateş etmesi değil, rastgele olarak yürümeyi tercih etmesi, ateş pozisyonuna geçmesi, bizi bulmak için farklı yerlerde bulunan düşmanların farklı yolları takip ederek bize doğru ulaşmaya çalışması, canı azaldığında kaçma girişiminde bulunması, seri animasyonlar çalıştırması bu grupta incelenebilir.

5- Düşman Sağlık Durumu

Düşmanımızın elbette bir sağlığı da olacaktır. Ateş ettiğimiz zaman dağa taşa attığmız mermi izlerinden değil, kan izi çıkması, ateş ettiğimizde sağlığının azalması, sağlığı belirli limitlerin altındayken daha farklı animasyonlar çalıştırması veya ölme animasyonu ile sahneden silinmesi bu grupta yer alacak. Bu konu aslen önümüzdeki dersin konusu…

6- Düşmanın player sağlığını düşürebilmesi

Düşmanın sadece ateş etme animasyonunu oynatması yetersiz kalacaktır. Temel olarak bize doğru ateş ettiğinde nasıl bizim bir ateş etme scriptimiz varsa düşmanın da kendine göre mesafeye veya silaha bağlı ve hatta düşmanın kendine bağlı olarak az ya da çok can götürecek şekilde ateş edebilmesi gerekir. Elbette sadece silah oyunu olarak düşünmeyin. Bir zombi size saldırabilir, bir köpek ısırarak canınızı azaltabilir… İlerleyen derslerde bu konuyu da öğreneceksiniz…

7- Gelişmiş Yapay Zeka

Bu işlemin sağlanabilmesi için kod bilgisinin biraz daha ileri düzeyde olması gerekir. Çoğu zaman farklı şartları çağırmamız işe yarayacaktır. Orta düzeyden farkı her oynadığınızda yapay zekanın farklı tepkimeler verebilmesidir. Çünkü bazı durumlarda önceden atanmış rastgele şartları yine rastgele olarak seçecek, bu yüzden aynı bölümü oynadığınızda aynı tepkilerle karşılaşmayacaksınız. Oyunu tamamen ezberleseniz bile tam olarak aynı yerde aynı düşmanı bulamayabilirsiniz. Kimi zaman yapay zekayı gelişmiş düzeye ulaştırmak uğruna yapay zekanın çok saçma hareketler içine girmesi (duvara öylece bakakalması gibi) durumlarla karşılaşılabiliyor… Ana serinin final bölümünden sonra bu tarz konulara geçiş yapabileceğiz…

 

Bu derste karşılaşılabilecek hatalar:

  • Eklediğim düşman saydam olarak ekleniyor!

Böyle bir probleminiz varsa ilk olarak videoyu atlamadan izleyin. Videodaki yöntem işe yaramaması durumunda bir material oluşturun ve textureları bu materyallere aktarın. Sonra oluşturulan yeni materialleri düşman karakterinize atabilirsiniz. Çoğunlukla transparan çözümü bu şekilde son bulacaktır.

  • Eklediğim düşman gri şekilde geldi textureler çıkmıyor!

Birinci ihtimal videoyu tam olarak seyretmediniz. İndirme sırasında bir hata yapmış olabilir veya indirdikten sonra texture ve materialleri unity içinde videodaki gibi dışarı aktarma aşamasını atlamış olabilirsiniz. Her ikisini de yaptıysanız düşmanınızın materyallerini inceleyin. Diffuse ve normal alanlarına texture atanmış mı? Otomatik atanmadıysa elle atama yapmanız gerekiyor.

  • Düşmanım silahını bırakıp gidiyor veya silah düşmandan ayrı hareket ediyor!

Bu konu doğru alt nesneye bağlamamakla ilgili olabilir. Silahı hangi el tutuyorsa o elin alt nesnesi veya bir üstteki bilek gibi bir alanın alt nesnesi olaraktanımlamanız işinizi görecektir. Kimi animasyonlar bir animasyon hatasından veya objenize animasyonun tam uygun olmamasından kaynaklı ters yönlerde veya fazla açılarda hareketler oluşturabilir. Uzaktan bakıldığında bu hata görünmese de yakından baktığınızda bir parmak fazla havada, bacak veya ayak animasyon sırasında ters dönmüş gibi görebilirsiniz.

Bu konudaki üçüncü ihtimal için animator içerisindeki animasyonunuza çift tıkladığınızda açılan ayarlar alanı ile ilgili olabilir. Based Upon alanını original seçeneği olarak değiştirmeyi deneyin. Açı biraz düzeldi ancak yine de tam olarak düzgün değilse başlangıç açısını biraz değiştirmeyi deneyin. Oyun sırasında dışa mı, aşağı yukarı mı görünüyorsa başlangıçta biraz aynı yöne doğru rotasyon verin. Çoğunlukla çözüme ulaşırsınız ancak fazla uğraş vermeniz gerekir…

  • Düşman animasyonu bir kez oynuyor sonra duruyor!

Eyvah demeden önce loop bölümünü açtığınıza ve apply butonuna tıkladığınıza emin olun. Muhtemelen çözülecektir.

  • Kodlarım hata veriyor!

Atamaları doğru yaptığınıza eminseniz yazım yanlışlarını kontrol edin. Çoğunlukla consoleda anlaşılır şekilde hangi satırda veya hangi kelimede hatanız olduğu yazar.

Kodları bu kadar basit hali ile paylaşmıyorum ancak önümüzdeki derslerde biraz geliştirince derste anlatmadığım bazı küçük püf noktalar veya derste “daha önce anlatmıştık” deyip atladığım ses gibi özellikleri de ekleyerek paylaşacağım…

 

KONU VİDEOSU:

YouTube video

 

 761 kez bu yazı okundu.,  2 kişi bugün inceledi.