Bunu bir tür davranış ağacı çözümü ile yapardım - hedefe giden yol ve A *'nızı engelleyen tüm engelleri not edin. Başarısız olursanız, bu engellerin üstesinden gelmeye yardımcı olabilecek nesneler olup olmadığını, bu durumda, o nesnenin yolunu kontrol edersiniz. Tekrar et. Bu, ajanın, araçları kullanma fikrini almadan önce hedefe ulaşmaya çalışması ve başarısız olması gerektiği anlamına gelir; bu, özellikle de hepsinin kontrol edilmesi gereken devasa bir karo dünyası varsa, zaman alabilir. Aracın sorunu nasıl çözeceğini düşünmek için biraz zaman aldığı çok yersiz görünmeyebilir.
Ancak gerçek, sert bir çözüm hayal edebiliyorum. Yol bulma kılavuzunuza başka bir boyut ekleyin. 2B bir harita olması durumunda, yol bulma ızgarasını 3B yaparsınız. Bu basit örnekte bu yeni boyut sadece iki derinliğe sahip olacaktı, ancak gerçek bir oyunda hızla büyüyecekti.
Z = 0'da araziyi normal koşullar altında eşlersiniz, yani su kiremitleri geçilmez olarak kabul edilir.
Z = 1'de, araziyi tırmıkla olduğu gibi eşlersiniz, yani su kiremitleri yürünebilir olarak kabul edilir (ancak örneğin duvar karolarınız varsa, bunlar sağlam kalabilir).
Yol bulma, x ve y boyutlarında sıradan bir A * 'dır, yani her ızgara hücresinin komşularına erişimi olduğu düşünülür. Ancak z boyutunda, A * 'nın yayılmasına izin VERİLMEZ.
Komisyonun bulunduğu yer hariç. Komisyon nesnesi, yol bulma ızgarasında z = 0 ile z = 1 arasında bir açıklık görevi görür.
Bu, A * 'nın z = 0 cinsinden dolguyu dışarı akıtacağı, suya çarpacağı ve seçeneklerin tükeneceği anlamına gelir - daha sonra tırmık karosu aracılığıyla z = 1'e ve z = 1'de (suyun yürünebileceği yerlerde) yayılacağı anlamına gelir. hedefe giden yolu bul. Sonuç, tereddüt etmeden NPC'nin tırmığa hareket etmesi ve ardından hedefe en kısa yolu taşımasıdır.