bir durdurma noktasına bulmak için basit bir cevabı ... zaman içinde herhangi bir noktada
, düz çizgiler varsayımını. Siz ve hedefiniz sabit hızlarda düz çizgilerle ilerliyorsunuz. Bu nedenle, konumunuzu ve hareketlerinizi hedeflerinizden çıkarabilir ve hedeflerle ilgili konum ve hız ile çalışabilirsiniz.
Hedefiniz, o satırdaki en yakın nokta - (o satırda) hedefin o kadar yakın olduğu zamandır. vektör nokta ürünlerle hesaplanabilir IIRC, ... Birazdan bu noktada hedefler yol hedefi (aynı DEĞİL sizden hattına dik açı olmasına var varsayarsak
P . V
t = - -----
V . V
onun ve hareketleriniz arasındaki açı). Trigonometri kullanarak (eşdeğer bir ürün kosinüsle ilgili) eşdeğer bir cevap alabilir ve hatta bir yıl önce eşzamanlı bir denklem yöntemini kullanarak (daha iyi bilmeme rağmen) çalıştım. (oids/thrust stili, döndürme ve itme gemileri arasında yerçekimi ile mücadele düşünün).
Buradan, en yakın noktanın nerede olduğunu ve ne kadar uzak olduğunu belirleyebilirsiniz.
Bu süreyi mevcut hızınızda ve yönünüzde küçük varyasyonlar için hesaplayın ve yakın gelecekteki bir kesişme için yinelemeli olarak en iyi duruma getirebilirsiniz. Tabii ki, t'yi en aza indirgemek, geçmişe daha da fazla ulaşabilme olasılığını getiriyor - kaçıyor! Belki de t karesini en aza indirmek daha iyi olurdu, ama sonra başka komplikasyonlarınız var - düşman sağınızda ise, gerçekten yavaşlamak istiyor musunuz? Her neyse, bu muhtemelen basit bir güdümlü füze için yeterlidir, ama tabii ki bir it dalaşında çok az bir kullanım için yeterlidir. Buna dair izlenimim, çoğu zaman yönetim kurulunun çoğunu göremediğiniz bir tür analog gerçek zamanlı satranç gibi. Açıkçası, bu yüzden, hareketlerin sadece joystick ve diğer kontrol ayarlarından daha yüksek seviyede bir modele ihtiyacınız var. Bunun için bir AI motoru tasarlamaya başlamadan önce, insan deneyimine dayalı taktikler konusunda epeyce bir araştırmaya ihtiyacınız olacaktır.
Arazi kaplamasından yararlanmak için, muhtemelen daha basit bir şey yapabilirsiniz. Grafiğe dayalı bir yol bulucu, vadiler boyunca bir yolun çizilmesiyle ilgili olabilir. Yol işaretlemenin çoğunu 2D olarak yapın ve bir uçurumun içine doğru uçmadığınızdan emin olmak için haritayı nispeten yumuşak varyasyonları "yalan" olarak değiştirin.
Muhtemelen, bir çeşit ağırlıklar ve taktiklerden oluşan bir sisteme ihtiyacınız vardır; Hedefinizden çok uzakta, yaklaştıkça olduğundan daha fazla kapağında kalmaya çalışmanız daha olası. Kendi kuyruğunuzda bir füze olduğunda, bu alabileceğiniz herhangi bir saldırı eylemine öncelik verir.
BTW - bunların hiçbiri oyun geliştirmenin gerçek deneyiminden değildir (ve kesinlikle hiçbir zaman bir açıklamanın pilotu olmamıştım). Bu nedenle, tedavi edilmemesi gereken belirsiz önerilere dikkat edin.Ve dikkat - benim 2 boyutlu oyunun bitmiş olmasının bir nedeni, AI kodunu çalıştırmaya çalışmak çok ilginçti, daha sonra sinir bozucu oldu - bir AI için en iyi denemenizin tek yolunun sizi yenebileceği kadar sinir bozucu. birçok kez daha fazla gemiye ve sınırsız bir cephane kaynağına sahip. tips.Actually için
Merhaba, Steve sayesinde benim sorum ben düşman devletler için bir devlet makinesini tutmak zorunda düşünmek specific.I değildir. (örneğin: saldırı bulidings, saldırgan oyuncu, kovalamaca oyuncu, oyuncu missles savunması .. vb). Ve duruma bağlı olarak algoritma değiştirilmelidir. H.A.W.X gibi oyunlarda nasıl AI uyguladıklarını merak ediyorum! –
Mutlak hızı görmezden geleceğinizi düşünmüyorum. Ortam (hava) dinlenmekte ve manevra yapabilmeniz üzerinde büyük bir etkiye sahiptir. – ziggystar
@ziggystar - En yakın nokta hesaplaması sabit bir hız gerektirir. Optimizasyon için küçük varyasyonları seçmek için, simüle edilmiş uçakların yaklaşık limitlerini hesaba katmak mantıklıdır, fakat bu, bir uçağın * gerçekte ne elde edeceğine karar vermeksizin bir * hedef * belirlemek içindir. Uçağın gerçek performansına karar vermek, AI motoru değil, fizik motorunun görevidir. Daha sofistike bir AI, fiziğin karmaşık bir modeline ihtiyaç duyabilir, fakat bu fizikle ilgili değildir - bu AI ile ilgilidir ve bu konuda çok basit bir AI'dır. – Steve314