Я б зробив це за допомогою якихось рішень дерева поведінки - ви рухаєтесь до мети та беруть до уваги всі перешкоди, які блокували ваш A *. Якщо ви не вдається, ви перевіряєте, чи є об'єкти, які можуть допомогти подолати ці перешкоди, в цьому випадку шлях до цього об’єкта. Повторіть. Це означає, що агенту потрібно намагатися пройти шлях до мети і провалитися, перш ніж отримати уявлення про використання інструментів, хоча це може зайняти час, особливо якщо є величезний світ плиток, який потрібно перевірити. Може не виглядати занадто поза місцем, щоб агенту потрібен певний час, щоб задуматися над тим, як вирішити проблему.
Однак я можу уявити собі справжнє, жорстке рішення. Додайте інший вимір до сітки пошуку шляху. Отже, у випадку з двовимірною картою ви робите сітку 3D-маршрутизації. У цьому простому прикладі цей новий вимір мав би лише глибину дві, але в реальній грі він швидко набуватиме великого розміру.
При z = 0 ви карта місцевості під час звичайних обставин, тобто водопровідна плитка вважається непрохідною.
При z = 1 ви зображуєте місцевість такою, якою вона є, граблями, тобто водопровідна плитка вважається горілкою (але якщо у вас є, наприклад, настінна плитка, вони можуть залишатися суцільними).
Знаходження шляху є звичайним A * в розмірах x і y, тобто кожна комірка сітки вважається доступною для своїх сусідів. У вимірі z, однак, A * НЕ дозволяється поширюватися.
За винятком де граблі. Об'єкт граблі виконує роль отвору між z = 0 і z = 1 у сітці пошуку шляху.
Це означає, що A * буде заливатися назовні в z = 0, потрапить у воду та не вистачить варіантів - тоді вона пошириться на z = 1 через плитку грабля, а при z = 1 (де вода може проходити) знайти свій шлях до мети. Ефект полягає в тому, що NPC без вагань рухається до граблі, а потім рухається найкоротшим шляхом до мети.