Hello friends, first of all I appreciate the help you can give me, I’m doing a character controller, based on the rotation of the camera, I have 2 problems, the first is that when I walk diagonally the character walks faster, and the second is that when I walk diagonally the character can not jump, I attach my code, the function that I use is executed in update, thank you very much

```
void Move_Pc()
{
if (transform.position.y < -50.0f) transform.position = new Vector3(0, 2, 0);
//
float moveAxis_mag = 0.0f;
Vector3 moveAxis = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
moveAxis_mag = Mathf.Round(moveAxis.normalized.magnitude);
Quaternion screenMovementSpace = Quaternion.Euler(0f, Camera.main.GetComponent<Transform>().eulerAngles.y, 0f);
Vector3 screenMovementForward = screenMovementSpace * Vector3.forward;
Vector3 screenMovementRight = screenMovementSpace * Vector3.right;
movingDirection = moveAxis.x * screenMovementRight + moveAxis.z * screenMovementForward;
//
_animator.SetBool("Grounded", mCharacterController.isGrounded);
if (mCharacterController.isGrounded)
{
cuenta_saltos = 0;
movingForce.Set(0f, 0f, 0f);
movingForce = transform.TransformDirection(movingDirection);
speed = speed_max;
}
if (Input.GetButtonDown("Jump"))
{
if (cuenta_saltos < 2)
{
if (cuenta_saltos == 0)
{
movingForce.y += jumpSpeed;
speed = speed_max * 2.0f;
_animator.Play("JUMP");
} else
{
speed = speed_max * 2.5f;
movingForce.y = jumpSpeed * 1.2f;
_animator.Play("JUMP_DOUBLE");
}
cuenta_saltos++;
}
}
DoGolpes();
movingForce.x = movingDirection.x * speed * moveAxis_mag;
movingForce.z = movingDirection.z * speed * moveAxis_mag;
movingForce.y -= gravity * Time.deltaTime;
if (movingDirection != Vector3.zero)
{
transform.rotation = Quaternion.LookRotation(movingDirection);
_animator.SetFloat("Walking", moveAxis_mag);
} else
{
_animator.SetFloat("Walking", 0.0f);
}
mCharacterController.Move(movingForce * Time.deltaTime);
//
}
```