Create a spawn function that spawns object where the actor being spawned originally was?

So basically, when I move this actor and throw it to the floor I want another actor of the same time to respawn in the same location that the first actor originally was. For some reason the Origin FVector that I have returns different values everytime. See code below.

// Sets default values
AConsoleGame::AConsoleGame(const FObjectInitializer& ObjectInitializer)
{
	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	GameConsoleBody = ObjectInitializer.CreateDefaultSubobject<UStaticMeshComponent>(this, TEXT("MyMesh"));
	RootComponent = GameConsoleBody;
	GameConsoleBody->SetSimulatePhysics(true);
	
}

// Called when the game starts or when spawned
void AConsoleGame::BeginPlay()
{
	Super::BeginPlay();
	Origin = this->GetActorLocation();
	UE_LOG(LogTemp, Warning, TEXT("%s"), *Origin.ToString());
	OriginalRotation = this->GetActorLocation(); 
	UE_LOG(LogTemp, Warning, TEXT("%s"), *OriginalRotation.ToString());
}

// Called every frame
void AConsoleGame::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );

	if (GetWorld())
	{
		if (this->GetActorLocation().Z < 50.f)
		{
			if (!hasDuplicate)
			{
				
				FActorSpawnParameters p;
				p.Template = this;
				p.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
				AConsoleGame* ConsoleGame = GetWorld()->SpawnActor<class AConsoleGame>(this->GetClass(), Origin, OriginalRotation, p);
				hasDuplicate = true;

			}
		}
	}
}