diff --git a/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp b/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
index 06e03060955c7230298531463b4cf02deff8e098..661f32b860aba5b0723e63da8fd6a8f0412832d4 100644
--- a/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
+++ b/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
@@ -113,26 +113,41 @@ void AVirtualRealityPawn::UpdateRightHandForDesktopInteraction()
 
 void AVirtualRealityPawn::OnForward_Implementation(float Value)
 {
-	if (RightHand)
+	//the right hand is rotated on desktop to follow the cursor so it's forward is also changing with cursor position
+	if (RightHand && !UVirtualRealityUtilities::IsDesktopMode())
 	{
 		AddMovementInput(RightHand->GetForwardVector(), Value);
 	}
+	else if (Head)
+	{
+		AddMovementInput(Head->GetForwardVector(), Value);
+	}
 }
 
 void AVirtualRealityPawn::OnRight_Implementation(float Value)
 {
-	if (RightHand)
+	//the right hand is rotated on desktop to follow the cursor so it's forward is also changing with cursor position
+	if (RightHand && !UVirtualRealityUtilities::IsDesktopMode())
 	{
 		AddMovementInput(RightHand->GetRightVector(), Value);
 	}
+	else if (Head)
+	{
+		AddMovementInput(Head->GetRightVector(), Value);
+	}
 }
 
 void AVirtualRealityPawn::OnUp_Implementation(float Value)
 {
-	if (RightHand)
+	//the right hand is rotated on desktop to follow the cursor so it's forward is also changing with cursor position
+	if (RightHand && !UVirtualRealityUtilities::IsDesktopMode())
 	{
 		AddMovementInput(RightHand->GetUpVector(), Value);
 	}
+	else if (Head)
+	{
+		AddMovementInput(Head->GetUpVector(), Value);
+	}
 }
 
 void AVirtualRealityPawn::OnTurnRate_Implementation(float Rate)