Unity ile Cisimlere Yapay Zeka Kazandırma

Unity ile oluşturulan 3 boyutlu cisimler normal olarak kullanıcının yönlendirmesiyle hareket ederler bunlar genel olarak First Person Controller olarak adlandırılırlar. Bunun dışında cisimlere farklı şekillerde hareket kazandırmak için cisimlere Animasyonlar hazırlanabilir ancak bu yöntemlerin hiç birinde cisimler Akıllı hareket etmezler.

Cisimlere akıllı hareket kazandırmak için javascript yazarak cisimlere belirli nesnelere karşı eğitim verebiliriz.Örneğin oluşturulan bir robot random olarak çıkan yemlerin üzerine doğru hareket etmesi akıllı bir hareket olarak adlandırılabilir.

Bunun için javaScript koduyla öncellikle Random olarak hareket uzayında yemler oluşturulup robotu buna doğru yönlendireceğiz. Şimdi yeme doğru giden cisim için yazılan javascript kodu verilecek.

this.transform.LookAt(bonus.position);

if(mesafe>10)

durum=true;

else

durum=false;

if(durum)

{

animation.CrossFade(“kos”);

transform.Translate(new Vector3(0,0,1));

}

Else

{

animation.CrossFade(“yuru”);

transform.Translate(new Vector3(0,0,.1));

}

mesafe=Vector3.Distance(transform.position,bonus.position);

status.text=”Mesafe : ” + mesafe;

if(mesafe<=2)

{

bonus.transform.position=new Vector3(Random.Range(0,100),0,Random.Range(0,100));

}

 

Bu javascript kodunu incelediğimiz zaman random olarak bir koordinat oluşturulup oraya yem atanıyor. Daha sonra bu kordinati robotun gideceği yön olarak gösteriyoruz

(this.transform.LookAt(bonus.position); ) .

Ardından uygulamayı çalıştırdığımız zaman robot gerçekten de yeme doğru hareket ettiğini göreceğiz.

 

 

 

 

 

 

 

Unity de Network

Unity platformunda network ile ilgili işlemler Network sınıfı altında toplanmıştır. Ağda meydana gelen bir çok olayda önceden network sınıfında belirlenmiş fonksiyonlar koşar. Bu fonsiyonların implementesini biz gerektiği şekilde yaparız.

OnPlayerConnected : Server tarafında çağrılır .Yeni bir bilgisayar oyuna girdiğinde bu fonksiyon çağrılır.

OnServerInitialized :Server kurulumu tamamlandığında çağrılır. Serverda çağrılır.

OnConnectedToServer :Client tarafında çağrılır.Client başarıyla server a bağlandıysa  çağrılır.

OnPlayerDisconnected: Server tarafında çağrılan bu fonksiyonda bir oyuncunun çıkması durumunda çalışır.

OnDisconnectedFromServer: Client tarafında serverla bağlantı koptuğunda server tarafında ise bağlantı sonlandığında çağrılır.

OnFailedToConnect: Client tarafında bağlantı denemesinin başarısız olduğunda çalışır

OnFailedToConnectToMasterServer:Client da yada serverda master server a bağlanmada bir hata olması durumunda çağrılır.

OnNetworkInstantiate:Herhangi bir obje (nesne) networkta Network.Instantiate fonksiyonu ile kopyalandığında çağrılır.

OnSerializeNetworkView:Network view tarafından takip edilen nesnelerin durumlarını senkronize ederken kullanacağımız fonksiyondur. Bu fonfsiyonun içinde nesnenin yeni durumunun alınması ve gönderilmesi işlemleri yapılabilir.

Bu fonksiyonların kullanımı ise yazdığımız script türüne göre syntax da küçük değişiklik olmakla birlikte genel olarak bu isimlerde fonksiyon yazarak içini doldurulması şeklindedir.

Mehmet Salih Deveci

Bilgisayar Mühendisi

Reklamlar
yorum
  1. Selman Ay dedi ki:

    Merhaba Mehmet Bey,

    Unity oyun motoru ile bir MMORPG yapmanın püf noktalarını verebilir misiniz? Yani bu motorla MMORPG yapmak için tam olarak neler yapmamız gerekiyor, hangi özellikleri kullanacağız, bir sunucuya nasıl bağlanacağız; gibi soruları cevaplayabilirseniz svinirim.

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Merhaba Selman Bey ben Unity oyun motorunda dönem projesinde bir oyun yaptım o kadar.Ancak oyunu yaparken MMORPG yapmadığım için cevap veremeyeceğim. Size iyi çalışmalar…

  2. Selman Ay dedi ki:

    Peki o zaman, burada Unity hakkında yazdığınız bilgiler için de teşekkür ederim. Size de iyi çalışmalar ve iyi geceler…

  3. Soner dedi ki:

    Merhabalar Mehmet bey,

    sitenizde verdiğiniz bilgilerden dolayı çok teşekkürler. Yalnız bir sorum olacak..

    bir inşaat projesi için unity ile bir tanıtım yapmak istiyorum..

    arazi yollar araclar evler hazır.. fakat ben burada site içindeki yollarda random hareket eden serit değistiren araclar yapmak istiyorum..

    nasıl bir yapay zeka hazırlayacagımı bilmiyorum.. belirli bir path ustunde olmayacagı için hareket de veremedim..

    eger aklınıza bir fikir bunu dinlemeyi cok isterim

    Saygılarımla

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Merhabalar Soner bey… Tekerleği kendin icat etmektense bir şeyler eklemek daha iyi mantığıyla size Unity sitesindeki aracı kullanmanızı tavsiye ederim. Orda yol boyunca hareket eden bir araç görmüştüm hatta arkadaşların onu alıp kullandığını biliyorum. Sizde ondan yararlanabilirsiniz. Zaten araçlar Random hareket edeceği için yapay zekaya da ihtiyaç duymazlarki. Bir animasyon hazırlamanız bunun için yeterlidir.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s