AI Aracılarının bir eğri boyunca hareket etmelerini nasıl sağlayabilirim?


12

Şu anda benim çok temel AI çerçevem ​​bir dizi noktadan oluşan tırtıklı bir yol boyunca hareket eden ajanlara sahip.

deniz yolu

Bunu, konumlarını bir noktadan diğerine hareket ettirerek yaparlar. Bir sonraki noktaya geldiklerinde bir sonrakine doğru hareket ederler. Bunu yolun kavisli bir sürümü boyunca düzgün bir şekilde hareket edecek şekilde nasıl değiştirebilirim ve eğriyi nasıl oluştururum?


bir sonraki noktayı nasıl seçerler?
FxIII

Üzgünüm, bu yorumu daha önce görmedim - yeni bir arama hedefini nasıl seçtiler veya aramadaki bir sonraki noktayı nasıl seçtiler?
SirYakalot

Yanıtlar:


4

Bir tür yol düzeltmenin peşindesiniz. Tabii ki, bummzack'in işaret ettiği gibi, gerçekleştirdiğiniz herhangi bir yolun düzeltilmesinin temsilcileriniz için yasal hareketlerle sonuçlandığından emin olmak istersiniz.

Gamasutra'nın bu makalesi , yol yumuşatma, yasal dönüşler ve gerçekçi, yumuşak tornalama algoritmaları dahil bilmeniz gereken hemen hemen her şeyi açıklıyor.

Biraz daha basit olan başka bir alternatif de, aracının yoldaki bir sonraki noktaya veya bu noktaya yakın olup olmadığını kontrol etmek için küçük bir sınırlayıcı daire / küre ile bir Seek davranışı kullanmaktır .


7

Kontrol noktalarınızı zaten bildiğinizden, eğrilik için bir algoritma (örneğin Hermite veya Kosinüs) kullanmak için enterpolasyon kodunuzu güncellemeniz yeterlidir.

Bu siteler, başlamanıza yardımcı olacak harika bir açıklama ve örnek kod sunar:

Paul Bourke Enterpolasyon Yöntemleri

Sol :: Öğreticiler - İnterpolasyon Hileleri


Peki, oluşturulan eğri aniden bir engele çarparsa ne olur?
31:31

Bu sadece ajanların kare başına hareketi içindir. Aynı çarpışma tespit algo hala geçerlidir. Bir çarpışma algılandığında, nesneyi önlemek (zor) için kontrol noktalarını değiştirin veya geçici olarak başka bir hareket algo kullanmaya başlayın.
Doug.McFarlane

@bummzack bu iyi bir nokta ve cevap bir gezinme ağı kullanmak ve buna göre eğrilerinizi düzeltmektir, ancak şimdilik sadece bu işi basit bir gezinme grafiğiyle çalıştıracağım ve bu yüzden bunu sadece düzleştirerek çözeceğim yolları biraz.
SirYakalot

@bummzack: kavisli yol oluşturma algoritmasının üstüne engellerden kaçınmak için bazı yönlendirme davranışları ekleyin.
imre

0

Buradaki taneye karşı gideceğim ve eğrilerinizi önceden oluşturmak yerine, bir hedef oluşturmak için kullanacağınız aynı mantığı kullanarak (örneğin) kare kare olarak ele almanızı öneriyorum. -missile .

Bu, çok daha kolay ve muhtemelen daha gerçekçi olacaktır çünkü iki nokta arasında duvar olduğunda özel durumlara ihtiyacınız yoktur - çarpışma algılamasını her zamanki gibi halledersiniz.

Dezavantajı, hareketin en uygun görünmeyeceğidir. Nesne daima, bir sonraki, anlam tek waypoint'ten en doğrudan yolu götürecek bir kamaya aksine o dönüm başlamaz doğru o zaten yol noktası 2. geçene kadar Durumunuza bağlı geçiş noktası 3, bu olabilir veya olmayabilir Ara noktalarınızı ayarlayarak sabitlenebilir (hatta bir sorun olsa bile).


1
Bu aslında önerdiğim bir Arama davranışı olurdu.
Ray Dey

0

Yol bulucu size yolu vermeli ve bunu değiştirmemelisiniz. Keskin dönüşlerle yolun, kısa yollara karşı uzun yollarda olduğu gibi pürüzsüz eğrilere sahip olanlardan daha iyi olduğunu dikkate almak için yol bulma algoritmanızı değiştirmenin mümkün olduğuna inanıyorum.

Bu konuda derinlemesine düşünmek için bir an bulabilirsem, burada bir çözüm göndereceğim, ancak bence bu yol.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.