Modifying actor spawn rotation to middle of screen world loation

I did this for my project and it seems to work pretty well. Basically, just raycast straight out from the camera location, then use the hit location to calculate a rotation offset for the projectile. I implemented it in code, but maybe you could use it to create a blueprint version.

// Setup raycast query parameters used in this function
	FCollisionQueryParams queryParams;
	queryParams.bTraceComplex = true;
	queryParams.AddIgnoredActor(this);
	queryParams.AddIgnoredActor(GetOwner());

// Calculate reticle target
	FHitResult hitResult;
	queryParams.TraceTag = FName(TEXT("ReticleTarget"));
	FVector maxReticleTargetExtent = GetTargetingSystemLocation() + GetTargetingSystemDirection() * maxTargetingDist;
	bool bHit = w->LineTraceSingleByProfile(
		hitResult,
		GetTargetingSystemLocation(),
		maxReticleTargetExtent,
		projectileCollisionProfile,
		queryParams);

	FVector reticleTargetLocation = bHit ? hitResult.ImpactPoint : maxReticleTargetExtent;

#if !UE_BUILD_SHIPPING
	if (AProjectile::bDebugProjectiles)
	{
		DrawDebugSphere(w, reticleTargetLocation, 100.f, 8.f, FColor::Red, true, 1.f);
	}
#endif //!UE_BUILD_SHIPPING

	// Calculate projectile spawn rotation
	FName muzzleSocket = *FString::Printf(TEXT("Muzzle%d"), muzzleIndex);
	FVector muzzleLocation = mesh->GetSocketLocation(muzzleSocket);
	FRotator projectileRotation = (reticleTargetLocation - muzzleLocation).Rotation();