Lo farei con una sorta di soluzione ad albero comportamentale: ti dirigi verso l'obiettivo e prenderò nota di tutti gli ostacoli che hanno bloccato il tuo A *. Se fallisci, controlli se ci sono oggetti che possono aiutare a superare quegli ostacoli, in quel caso, il percorso verso quell'oggetto. Ripetere. Ciò significa che l'agente deve cercare di raggiungere l'obiettivo e fallire prima di avere l'idea di usare gli strumenti, il che potrebbe richiedere del tempo, specialmente se c'è un enorme mondo di tessere che devono essere controllate tutte. Potrebbe non sembrare troppo fuori posto che l'agente impiega del tempo a riflettere su come risolvere il problema.
Posso immaginare una vera soluzione hardcore, tuttavia. Aggiungi un'altra dimensione alla griglia di ricerca del percorso. Quindi, nel caso di una mappa 2D, crei la griglia di tracciamento 3D. In questo semplice esempio questa nuova dimensione avrebbe solo una profondità di due, ma in un gioco reale diventerebbe rapidamente grande.
A z = 0 si mappa il terreno in circostanze normali, il che significa che le tessere dell'acqua sono considerate impraticabili.
A z = 1 si mappa il terreno così com'è mentre si ha il rastrello, il che significa che le piastrelle d'acqua sono considerate percorribili (ma se si hanno ad esempio piastrelle da parete, quelle potrebbero rimanere solide).
La ricerca del percorso è un normale A * nelle dimensioni xey, il che significa che ogni cella della griglia ha accesso ai suoi vicini. Nella dimensione z, tuttavia, A * NON è autorizzato a diffondersi.
Tranne dove si trova il rastrello. L'oggetto rake funge da apertura tra z = 0 e z = 1 nella griglia di ricerca del percorso.
Ciò significa che A * si riempirà inondando verso l'esterno in z = 0, colpirà l'acqua ed esaurirà le opzioni - quindi si diffonderà a z = 1 attraverso la tessera del rastrello e in z = 1 (dove l'acqua è percorribile) trova la sua strada verso l'obiettivo. L'effetto è che l'NPC senza esitazione si sposta sul rastrello e quindi sposta il percorso più breve verso l'obiettivo.