How to handle smart nav links with characters moved by root motion

Been trying to get the OnSmartLinkReached event to fire when my AI pass over it for two hours now but it never does. My AI movement is entirely root motion driven and I am using FindPathToLocationSynchronously for the pathfinding. Even though the AI correctly move to the link start and will cross the link if it is unobstructed and requires no special movement (a drop from height for example) the event never gets called.

From what I can gather I think the event is fired when the character movement component tries to traverse a nav link. As I’m using RM to move the character I’m guessing this does not happen. What are my options for getting a root motion driven character to be able to use smart links to perform custom movement across obstacles?

1 Like

I am using exactly the same approach: RootMotion + FindPathToLocationSynchronously + custom movement logic.
And, of course, the same problem problem with Smart Link “… On Reached … ” event .
Did you manage to find a solution @Joshd1271410 ?

You’re correct. Smart link events are triggered by the PathFollowingComponent when it controls movement. With full root motion, the movement component never “uses” the link, so OnSmartLinkReached won’t fire.

If you want smart links to work, you need to let AIController + MoveTo handle path following at least up to the link, then pause movement and trigger your root motion montage manually when OnSmartLinkReached fires.

If you insist on pure root motion with FindPathToLocationSynchronously, then you must handle links yourself. Inspect the path points, detect when the next segment is a smart link, and trigger your custom root motion logic at that point.

Smart links require path following control. Full manual movement means full manual link handling.