Hi all, I’ve been trying out A* as a possible replacement for using NavMeshPlus (which uses the new unreleased/unsupported Unity NavMesh Components). I’d sorta assumed it would be a no-brainer upgrade, after a couple of days playing with A* I’m starting to accept that maybe it just isn’t a good fit for my project though.
Specific issues/confusing moments I’ve hit:
- A* can only auto-generate pathfinding from a Unity tilemap by using a Grid Graph (because the tilemap colliders are 2D and Recast Graphs need 3D colliders to work). This seems inefficient vs. a navmesh and doesn’t match the world geometry nearly as well even with many thousands of nodes.
- Tilemaps are often layered in order to put, for instance, a bridge across a river where the river has a collider, bridge is on a layer above without one. I can’t see an obvious way to make the bridge walkable using A* without creating a single layer tilemap world (which would then mean creating more art, would stop me from animating anything going underneath the bridge, etc.).
- Adding a kinematic Rigidbody to the same GameObject as an AIPath component makes it stutter during pathing movement. Adding the rigidbody on a child GameObject seems to be fine.
- Making a path go in a straight line was surprisingly difficult … I ended up using the funnel modifier, quality had to be set to high, unwrap is required to be on to work in 2D … all of which is creating a performance overhead.
So, I’m kinda perplexed by all this, it seems like from the forum questions, examples support, that the A* plugin is more focussed on 3D than 2D worlds and that for top-down-2D-using-tilemaps there’s not really a compelling reason to use this over other options. I do understand (I think!) that I could manually build a navmesh in Blender but … I’m not gonna do that.
I don’t mean this at criticism, just curious to get other takes, share some feedback as a new user. If I were working on a 3D project I could see this being really solid. As it is I’m slowly, grudgingly, preparing myself to roll back everything to use NavMeshPlus instead.