Merhaba,
Basit bir futbol oyunu için yapay zeka yazmaya çalıştım. Ben karışmadığım zaman her şey güzel ilerliyor, yapay zeka topu alıyor ve gol atıyor. Fakat ben karşısına çıkarsam ( herhangi bir engele değerse ) topa doğru giderken titremeye başlıyor.
Ayrıca 2 karakter de aynı olmasına rağmen ( tek fark birinde yapay zeka scripti var ) ben ileri doğru giderken onu hiç ağırlığı yokmuş gibi geri itebiliyorum.
Bu konuda yardımcı olabilecek varsa fikir verebilir mi?
https://youtu.be/HAOFIpxqRa0
Yapay Zeka Problemi - Unity 2019.3
7
●739
- 25-05-2019, 00:12:46Öncelikle debug yaparak çalıştırırsanız belirttiğiniz şeylere nelerin sebep olduğunu daha iyi görebilirsiniz. Titreme dediğiniz kendinizde belirtmişsiniz (herhangi bir engele değerse) sürekli bir konum belirlenmesi olduğu için titreme olarak ortaya çıkıyor olabilir. Gördüğüm kadarıyla oyununuz 2d. muhtemelen fizik kullanmıyorsunuz. Hiç ağırlığı yokmuş gibi itebiliyorum demişsiniz. Nasıl bir ağırlık belirlediniz ki acaba? Yani kolayca sürüklememeniz için nasıl bir yapı kullandınız ki bu çalışmıyor veya yetersiz kalıyor? İlk olarak aklıma gelen bunlar.delamis adlı üyeden alıntı: mesajı görüntüle
Bu arada Yapay zeka kodlamak zor bir iş, tebrikler kolay gelsin. - 25-05-2019, 00:45:18Cevabınız için teşekkür ederim.Seyit25 adlı üyeden alıntı: mesajı görüntüle
Debugla kontrol ediyorum ama henüz bulamadım malesef.
Fizik derken, rigidbody kullanıyorum hareketler vs. için. Hiç ağırlığı yokmuş gibi dememin sebebi şu, 2 karakter de aynı prefabdan üretildi. Normal şartlarda biri sağa biri sola giderken ( Yani sallıyorum biri +3 x biri -x değeri uygularken ortada birbirlerini itmeleri gerekiyor ama ben en ufak ittiğimde karşıdaki karakter savruluyor. O aynı şekilde beni itemiyor.
Kendimi geliştirmeye çalışıyorum. Çok fazla kolaylık var aslında unity'de ama kaynak eksikliğinden geri kalıyoruz. Artık araştıra araştıra gelişecek. - 25-05-2019, 01:33:47X'e karşı -x kuvveti uygulanacaksa basit bir limit hesabı işinizi görecektir.Eğer player1 / 2'ye yaklaştıkça X değer düşüyorsa güncel değeri hesaplatarak uygulanması gereken kuvveti ekrana verin.
var playerbirpozisyon; var player2pozisyon; var collision = playerbirpozisyon - player2pozisyon -2; /*birbirlerine değdiklerinde*/ İf(collision){ playerbirpozisyon -2; player2pozisyon +2; }Bu birbirlerinden 4 puan uzaklaşmalarını sağlayacak.Tabi playerbirpozisyon ve player2pozisyon'larını bir event içinde sürekli takip ettirmeniz gerekecek. - 25-05-2019, 01:35:46Breakupsong adlı üyeden alıntı: mesajı görüntüle
Teşekkür ederim, bir deneme sağlayacağım fakat top geri sektiğinde de titreme gerçekleşiyor. Onu ittirmek zorunda, yine de belki bir türevini üretebilirim - 25-05-2019, 01:40:46player1,player2,top şeklinde değişken hesaplanacak demektir.Kodunuzu paylaşırsanız bakalım.Bu arada her ne kadar istediğiniz şey olmasa da bu link fikir verebilir.delamis adlı üyeden alıntı: mesajı görüntüle
- 25-05-2019, 02:00:36aslında şöyle yazdıktan sonra biraz düşündüm de, sonuçta tag'lardan neyi ittirip ittirmeyeceğime karar verebilirim. Şu anda başka oyun üzerinde çalışıyorum ona döndüğümde gerekli kod eklentisini yapıp deneyceğim sonucu paylaşırım. Linkteki bilgi de baya yararlı oldu onu da detaylı inceleyeceğim.Breakupsong adlı üyeden alıntı: mesajı görüntüle
teşekkür ederim - 26-05-2019, 00:01:17Fizik dediğim mesela yerçekimi vardır yani sizin dışınızda elementlere etki eden faktörler vardır. Siz de böyle bir durum yoksa çözüm daha kolay olacaktır. Karşıdaki karakter savruluyor demişsiniz, bu nasıl olabilir? Bunu düşünün bence. Ben burada kodu göremediğim için çok birşey diyemiyorum. Örneğin durdurmanız gereken bazı değerleri gerektiği yerde kesmiyorsunuzdur veya azaltmıyorsunuzdur, debugtan kastım hata olduğundan değil. Kod içerisinde değişkenlerin değerlerine bakarak adım adım çalıştırmanız. Mesela çarpma anında çalışan fonksiyonun içeriğine mutlaka bakın.delamis adlı üyeden alıntı: mesajı görüntüle