Line trace doesn't return true even thought it clearly hits an actor.

I have 2 line traces first one from the center of the screen and from the muzzle. Somehow line trace from the muzzle doesn’t become true even though it is clearly hit the floor. You can see in my video that the green sphere is when the muzzle line trace is true. Somehow it doesn’t always become true when you see that the debug line clearly hits the floor. https://youtu.be/-xRf5Y6f53c

if (GetWorld()->LineTraceSingleByChannel(Hit, EyeLocation, TraceEnd, COLLISION_WEAPON, QueryParams))
	{
		HitLocation = Hit.ImpactPoint + UKismetMathLibrary::FindLookAtRotation(EyeLocation, Hit.ImpactPoint).Vector();
	}
	if (GetWorld()->LineTraceSingleByChannel(Hit, MuzzleLocation, HitLocation, COLLISION_WEAPON, QueryParams))
	{

then I found the problem. It looks like the Hit.ImpactPoint doesn’t always return the exact location probably there’s a gap between the impactpoint and the floor therefore it won’t registered as hit. I add the findlookrotation from the camera to the impactpoint.

if (GetWorld()->LineTraceSingleByChannel(Hit, EyeLocation, TraceEnd, COLLISION_WEAPON, QueryParams))
	{
		HitLocation = Hit.ImpactPoint + UKismetMathLibrary::FindLookAtRotation(EyeLocation, Hit.ImpactPoint).Vector();
	}
	if (GetWorld()->LineTraceSingleByChannel(Hit, MuzzleLocation, HitLocation, COLLISION_WEAPON, QueryParams))
	{

This seems to fix the problem.