SetActorLocation Fails, Returns False

Actor requires atleast one component in order to be movable, because in reality SetActorLocation moves location of your root component as source (which is alsoin API reference) suggest

bool AActor::SetActorLocation(const FVector& NewLocation, bool bSweep)
{
    if (RootComponent)
    {
        const FVector Delta = NewLocation - GetActorLocation();
        return RootComponent->MoveComponent( Delta, GetActorRotation(), bSweep );
    }

    return false;
}

I recomad you to use billboard component, it a component of those icon things you see on the level in editor for example on lights, by default they only visible in editor so you don’t need to worry it will mess the look, not to mention it might be good to create debug that shows the waypoint actor by making bilbord component visible also in game :slight_smile: Here code to include billboard component to actor:

in actor class in .h include:

TSubobjectPtr<UBillboardComponent> Bill;

in contractor of a actor class put:

Bill = PCIP.CreateDefaultSubobject<UBillboardComponent>(this, TEXT("Billboard"));
Bill->Mobility = EComponentMobility::Type::Movable;
RootComponent = Bill;

and there you go ^^ here API refrence for billboard component