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 you 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.
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.