BT IsAtLocation - use the stock UE5 decorator
TL;DR: Unreal Engine already ships
UBTDecorator_IsAtLocation. Use it directly on LCM Nav3D
pawns. No LCM Nav3D-specific variant exists or is needed.
Why we didn't
ship LCM_BTDecorator_IsAtLocation
This audit found that UBTDecorator_IsAtLocation already
does what an LCM Nav3D-side variant would do:
- Reads a
VectororObjectblackboard key - Computes distance from the pawn to the key
- Returns true if within
AcceptableRadius - Optional
bPathFindingBasedTestreuses the active path-following result
This is the canonical "did the AI reach the location" predicate. Re-shipping it on the LCM Nav3D side would be redundant and force buyers to pick between two identical nodes.
Three-step usage on an LCM Nav3D pawn
Drop the stock decorator on a Sequence / Selector node in your BT graph. Right-click → Add Decorator → "Is At Location".
Set the blackboard key. Vector key (a goal position) or Object key (an AActor whose location is the goal -
bUseNavAgentGoalLocationprojects to nav-agent location). For LCM Nav3D flying pawns where you want the literal world position, use Vector.Set
AcceptableRadiusto your "we count this as arrived" distance in cm. Typical: 50-150 cm.
That's it. The decorator works on every LCM Nav3D pawn that has an AIController - no LCM Nav3D-specific configuration needed.
When to use the path-finding variant
UBTDecorator_IsAtLocation::bPathFindingBasedTest makes
the decorator consistent with whatever was used to reach the location -
useful when the move was via UBTTask_MoveTo (Recast) so the
"arrived" check matches.
For LCM Nav3D moves, this option will fall through
to Recast even if your goal was inside an LCM Nav3D volume - leave it
OFF and use straight geometric distance until T37 NavSystem
bridge lands. After T37, the stock
bPathFindingBasedTest will route through LCM Nav3D
automatically when the goal is in an LCM Nav3D-managed region.
Related LCM Nav3D-unique decorators
For predicates that don't have a stock equivalent, see the LCM Nav3D-unique decorators we did ship:
LCM_BTDecorator_PathLengthBelow- true-3D LCM Nav3D path-length check (stockDoesPathExistis binary + Recast)LCM_BTDecorator_HasLineOfSight- voxel-aware Lazy Theta* LOS (stock uses raycasts only)LCM_BTDecorator_IsInCover- composite SweepPenalty + LOS predicateLCM_BTDecorator_ChunkLoaded- SVO streaming probeLCM_BTDecorator_ThreatVisibleViaPerception- AIPerception + LCM Nav3D LOS composite
These are genuinely additive surfaces; "IsAtLocation" is not - use stock.