NavLink and making AI jump?

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” :wink:

That should pretty much do it :slight_smile: Sorry for any potential misspelling of class or function names :smiley: