TopDown Shooter: rotation problem with piched camera

pitching the camera springarm results in difference between mouse position and character rotation.

I have a crosshair drawn at the location of the mouse courser and I rotate the yaw of my character towards the mouse wich is working fine as long as my camera is looking exactly from above.
But when I set my camera (i change the cameraspringarm pitch from -90 to -80) to look from a little from behind my character, the point where my mouse is and the rotation where my character is looking drifts apart and is only correct when i have my mouse infront of my character or behind it. Someone a idea what i could do ?

in my character.cpp

//ROTATE THE CHARACTER TO MOUSE
		FVector mouseLocation, mouseDirection;
		APlayerController* MyController = GetWorld()->GetFirstPlayerController();
		MyController->DeprojectMousePositionToWorld(mouseLocation, mouseDirection);
		FRotator currentCharacterRotation = this->GetActorRotation();
		FRotator targetRotation = mouseDirection.Rotation();
		FRotator newRotation = FRotator(currentCharacterRotation.Pitch, targetRotation.Yaw,       currentCharacterRotation.Roll);
		SetActorRotation(newRotation);

my HUD.cpp

	// Draw very simple crosshair
	// find center of the Canvas
	const FVector2D Center(Canvas->ClipX * 0.5f, Canvas->ClipY * 0.5f);
	float LocationX;
	float LocationY;
	APlayerController* MyController = GetWorld()->GetFirstPlayerController();
	MyController->GetMousePosition(LocationX, LocationY);
	
	// offset by half the texture's dimensions so that the center of the texture aligns with the center of the Canvas
	const FVector2D CrosshairDrawPosition((LocationX - (CrosshairTex->GetSurfaceWidth() * 0.5)), (LocationY - (CrosshairTex->GetSurfaceHeight() * 0.5f)));
	// draw the crosshair
	FCanvasTileItem TileItem(CrosshairDrawPosition, CrosshairTex->Resource, FLinearColor::White);
	TileItem.BlendMode = SE_BLEND_Translucent;
	Canvas->DrawItem(TileItem);

//ROTATE THE CHARACTER TO MOUSE
FVector mouseLocation, mouseDirection;
APlayerController* MyController = GetWorld()->GetFirstPlayerController();
MyController->DeprojectMousePositionToWorld(mouseLocation, mouseDirection);

		//rotate 10 degrees around y axis
		FVector YAxisRotatedVector = mouseDirection.RotateAngleAxis(10, FVector(0, 1, 0));

		FRotator currentCharacterRotation = this->GetActorRotation();
		FRotator targetRotation = YAxisRotatedVector.Rotation();
		FRotator newRotation = FRotator(currentCharacterRotation.Pitch, targetRotation.Yaw, currentCharacterRotation.Roll);
		SetActorRotation(newRotation);

now it works :smiley: hat to rotate the mouse direction