NavLink points don't take AgentRadius in account

Hello,

probably since first version, there is one issue which causes NavLinks to be unsafe and sometimes confusing.

Picture:

Project download:

Used version: 4.7.6 (smart links don’t work in 4.8, so I used older version)
If you send character across navlink (up), colored text “Reached” should appear. Press F key and send character across navlink, debug log will not appear.

Reproduction steps:

  1. Create Top Down template
  2. Add NavModifier volume and Nav Link Proxy with smart link enabled
  3. Position NavLinkProxy start point and end point to be close to the edge of navmesh
  4. Set Location of Character during gameplay to start point or end point of navlink
  5. Send Character to the opposite site, so he should use navlink for travelling
    = He will not use NavLink and will just go straight to that point

Cause:

This is caused because when we set location of character close to the edge of navmesh it thinks it is not on navmesh anymore because character is not just point, it is cylinder. But NavLink start and end are points, they are not cylinders, so they don’t take radius of character in account.

Solution:

NavLink start and end should be cylinders of AgentRadius size and they need to be fully enclosed by navmesh, not just overlapped.

Why it is needed:

I have multiple features based on NavLinks. Good example is ladder. My character AI goes to navlink start point, climbs up ladder and then its location is set to navlink end point. If I send this character back to original location across NavLink it will ignore ladder and just jump down from ledge. Yes, there is workaround, I need to make sure that every navlink start and end point is not near navmesh edge but checking every navlink in map and testing it is time consuming and this issue can be easily overlooked, so it can happen in final game too.

Thank you, see my other NavLink question too :slight_smile:

bumpy bump

Hello ,

The example given in your post is unclear as to how this reproduces the issue. When reproducing the issue there is not an obvious problem that occurs. It appears to working as intended. Could you elaborate on the intended result for this reproduction and how the actual result is at an inverse to what is desired?

Hello Rudy, thank you for interest!

If we set position of character directly to end point of valid nav link, we assume that character is on valid navmesh location. When nav link end point is close to navmesh edge it is marked as valid but when we place character on this end point, character’s nav mesh location is invalid and that’s confusing.

What should happen in project:
When you send character somewhere using my steps he should travel across nav link, so from nav link point to nav link point and then continue on pathfinding.

What actually happens:
He does not respect navmesh and goes just straight to target point.

I understand it can be hard to understand issue. Originally I was expecting answer from Mieszko but he has probably a lot of work :slight_smile:

Hello ,

After looking over your explanation I was able to reproduce the issue that you are referring to on our end. I have written up a report ( UE-20504) and I have submitted it to the developers for further consideration. I will provide updates with any pertinent information as it becomes available. Thank you for your time and information.

Make it a great day