A proper C++ solution would involve following steps:
- Implement a new Navigation Area class - you do that by deriving from [FONT=Lucida Console]UNavArea. Let’s call it [FONT=Lucida Console]UNavArea_Jump
- Define a “jump flag” - the implementation details don’t really matter, but a enum would work best here.
- Set the “jump flag” in [FONT=Lucida Console]UNavArea_Jump::AreaFlags
- Now you’ll be able to assign [FONT=Lucida Console]UNavArea_Jump as a navigation area of navigation links.
- Next step is to implement your own path following component. Derive from [FONT=Lucida Console]UPathFollowingComponent. Let’s call it [FONT=Lucida Console]UMyPathFollowingComponent.
- Have [FONT=Lucida Console]UMyPathFollowingComponent override [FONT=Lucida Console]UPathFollowingComponent::SetMoveSegment(uint32 SegmentStartIndex) function. This function gets called whenever AI is starting to follow new path segment
- if [FONT=Lucida Console]FNavMeshNodeFlags(Path->PathPoints[SegmentStartIndex].Flags).AreaFlags has your defined “jump flag” set it means it’s “jumpable”
- the simplest solution would be to enable flying in such a case. You do that by calling [FONT=Lucida Console]SetMovementMode(MOVE_Flying) on your movement component. From within path following component you can get this by casting [FONT=Lucida Console]UPathFollowingComponent::MovementComp to [FONT=Lucida Console]UCharacterMovementComponent.
- don’t forget to set movement mode back to [FONT=Lucida Console]MOVE_Flying once AI finished following “jump segment”
That should pretty much do it
Sorry for any potential misspelling of class or function names 