C++ Acceptance Radius doesn't seem to work

Hi! I’m currently trying to implement simple navigation into my game using C++ but I can’t seem to get the acceptance radius to work. I’m trying to make a character run after me and stop when they’re close enough.

Here’s the code for the entire function (inside of a custom AIController):

void ALocalAIControllerNPC::MoveToTarget()
{
	if (NavSystem != nullptr)
	{
		if (GetPawn() != nullptr)
		{
			if (TargetActor != nullptr)
			{
				UNavigationPath* PathToActor = NavSystem->FindPathToActorSynchronously(this,GetPawn()->GetActorLocation(), TargetActor);
				FAIMoveRequest NewMoveRequest;
				NewMoveRequest.SetAcceptanceRadius(500);
				GetPathFollowingComponent()->RequestMove(NewMoveRequest, PathToActor->GetPath());
			}
		}
	}
}

It doesn’t matter what I put into SetAcceptanceRadius(), the character still runs into me and keep going without stopping. Why is this? I looked into the RequestMove() function and found this line:

const float UseAcceptanceRadius = (RequestData.GetAcceptanceRadius() == UPathFollowingComponent::DefaultAcceptanceRadius) ? MyDefaultAcceptanceRadius : RequestData.GetAcceptanceRadius();

I’m not sure exactly how to parse this. Can someone please explain this line?

If there’s any additional information needed, feel free to ask.

Have you tried explicitly setting the goal location or goal actor on your Move Request? You can set an actor or position directly in the constructor or you can call a method to set the goal. I don’t think it uses the path for the goal. It uses it for the destination which is a different concept.

RequestMove() should output info to the log. So you can look there for more info as well to see if there’s anything going on.

Hi, thank you for your answer! I never tried that but I opted to changing the code to use the normal MoveTo() function and shelved the above approach for now. It works ok but if I feel like I need more control in future I will look into the things you mentioned. Thanks!