Well, I solved the problem #3 too now!
I found this info on a forum :
*The reason you move slowest when you
are not looking straight ahead is
because those vectors are wasting some
of their length going upward/downwards
which results in less length to go
forward, hence slower speeds. You need
to zero your Z axis on your direction
vector:Code:*
voidAFPSController::MoveForward(float
AxisValue) {
//Get the forward vector
FVector direction = FRotationMatrix(GetControlRotation()).GetScaledAxis(EAxis::X);
// We get the flattened forward look direction and normalize it
direction = FVector(direction.X, direction.Y, 0.f).GetSafeNormal();
AddMovementInput(direction, AxisValue);
}
This gives the direction
your player is looking on a lateral
plane.
So now my correct FPSCharacter.ccp file for UE 4.24.2 contains :
void AFPSCharacter::MoveForward(float Value)
{
// Find out which way is "forward" and record that the player wants to move that way.
FVector Direction = FRotationMatrix(Controller->GetControlRotation()).GetScaledAxis(EAxis::X);
//FVector Direction = FRotationMatrix(GetControlRotation()).GetScaledAxis(EAxis::X); //This one works too
Direction = FVector(Direction.X, Direction.Y, 0.f).GetSafeNormal();
AddMovementInput(Direction, Value);
//debug vitesse :
FString vitesse = AFPSCharacter::GetVelocity().ToString();
GEngine->AddOnScreenDebugMessage(1, 0.0f, FColor::Purple, "Velocity =" + vitesse);
}