Skip to content

Instantly share code, notes, and snippets.

@dacanizares
Last active October 29, 2023 20:11
Show Gist options
  • Save dacanizares/5db9c59281a9c9049bf819acce7e29bc to your computer and use it in GitHub Desktop.
Save dacanizares/5db9c59281a9c9049bf819acce7e29bc to your computer and use it in GitHub Desktop.
Sample AI Controller - GetRandomReachablePointInRadius - UE4
#include "Test/MovementAIController.h"
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"
#include "AI/NavigationSystemBase.h"
#include "NavigationSystem.h"
void AMovementAIController::BeginPlay()
{
Super::BeginPlay();
GoToRandomWaypoint();
}
void AMovementAIController::GoToRandomWaypoint()
{
FVector Result;
if (GetRandomPointInRadius(GetPawn()->GetActorLocation(), 600, Result)) {
MoveToLocation(Result);
}
}
bool AMovementAIController::GetRandomPointInRadius(const FVector& Origin, float Radius, FVector& OutResult)
{
UNavigationSystemV1* NavSys = FNavigationSystem::GetCurrent<UNavigationSystemV1>(GetWorld());
if (!NavSys)
{
return false;
}
FVector Result;
bool bSuccess = NavSys->K2_GetRandomReachablePointInRadius(GetWorld(), Origin, Result, 600);
//Out
OutResult = Result;
return bSuccess;
}
void AMovementAIController::OnMoveCompleted(FAIRequestID RequestID, const FPathFollowingResult& Result)
{
Super::OnMoveCompleted(RequestID, Result);
GoToRandomWaypoint();
}
@dacanizares
Copy link
Author

No problem!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment