How to do a shape raycast?

Hi I am trying to get my pawn to be able to pick up items, but I am having trouble with the ray cast to determine if a item is in view.
At the moment I have it working with a line raycast, but due to the camera system (similar to top-down) this isn’t really easy to use, so instead I wanted to do a ray cast that doesn’t consider yaw - i.e it doesn’t matter if the hit actor is above or below the players view so long as the player pawn is facing in the direction (pitch) of the hit actor, and it is in range.

As I understand it from the world.h, I could do this with sweepsinglebychanel() which seems to do a raycast with a shape, which could be a cone, or a rectangle. However, I am at a loss as to how to implement it?

Any help would be greatly appreciated.

Here is my code for the line trace:

ADemoUsableActor* ADemoCharacter::GetUsableInRange()
{
	FVector CamLoc;
	FRotator CamRot;

	if (Controller == nullptr)
		return nullptr;

	Controller->GetActorEyesViewPoint(CamLoc, CamRot);
	const FVector TraceStart = CamLoc;
	const FVector Direction = CamRot.Vector();
	const FVector TraceEnd = TraceStart + (Direction * MaxUseDistance);

	FCollisionQueryParams TraceParams(TEXT("TraceUsableActor"), true, this);
	TraceParams.bTraceAsyncScene = true;
	TraceParams.bReturnPhysicalMaterial = false;

	TraceParams.bTraceComplex = false;

	FHitResult Hit(ForceInit);
	GetWorld()->LineTraceSingleByChannel(Hit, TraceStart, TraceEnd, ECC_Visibility, TraceParams);

	DrawDebugLine(GetWorld(), TraceStart, TraceEnd, FColor::Red, false, 1.0f);

	return Cast<ADemoUsableActor>(Hit.GetActor());
}

Hi Dave. Did you ever figure this out? I am trying to use sweepmultibychanel() and I was hoping you could help. Thanks.