Navigation doesn't differentiate between agents with same size but different movement properties

In my game I have multiple types of AI pawns with the same size but some are able to jump and some aren’t. I’m trying to set up Nav Link Proxies so the ones that can jump actually do so at the right spot. It looks like you can specify which nav agents are able to use the proxies but when I set that up either all or none of my pawns tried to use it, depending on whether the jump nav agent was first or second in my list.

Digging into the source code it seems that when the engine tries to find which agent best fits my properties it only looks at the radius and the height, completely ignoring the movement properties. I tried making my second nav agent 1 unit larger but, in addition to that not being a very good solution, nav data doesn’t seem to be generated for multiple nav agents with very similar sizes.

Hey kgamble,

Sorry for the delay.

This definitely sounds like an issue, but would you mind providing a functional example of this in action? If you have a set of repro steps we can use on our end to see the issue occur, that would be great, or even a simple test project that you can provide so we can take a closer look at your setup.

I’ve set up an example of what I’m attempting to do in this project.

The steps I took were:

  1. Create a new blank project.
  2. Add a NavMeshBoundsVolume to the default map and resize it to the size of the Floor actor.
  3. Add a cube to the map, scale it so it covers at least half the floor, starting from an edge.
  4. Add a NavLinkProxy to the map, make the left and right links on either side of the cube (near the edge).
  5. Create a Character blueprint, give it an Actor variable, in BeginPlay call Simple Move To Actor, pass in the variable you created.
  6. Place an instance of the character near the NavLinkProxy, a target point on the other side of the cube, set the Character’s actor variable to the target point.
  7. In Project Settings->Navigation System add 2 supported agents. The default values should be the same, just check “Can Jump” for one of them so their movement capabilities are different.
  8. In your NavLinkProxy change the Supported Agents to only be one of your two possible agents.
  9. Run PIE, if the supported agent from 8 was the first one the Character should walk straight for the cube, if it was second then the Character walks around.
  10. Switch the Supported Agent on the NavLinkProxy, run it again.

Hopefully that’s clear enough for what I’m trying to do.

After further discussion with our developers, this appears to be a missing feature rather than a bug. As a result, I’ve entered a feature request, which you can track using the link below:

Please note that a feature request does not guarantee a feature’s implementation into the engine.

Have a great day