How to fix "Rotation quaternions must be unit length." error and how to stop characters from phasing each other?

I have a player movement script for a fighting game I am working.I wanted to freeze the characters rotations so that they don’t tip over and wont be able to get back up.Though the script is working Just fine the error still pops up “Rotation quaternions must be unit length.” I try to normalize the quaternion by using .normalize but then my character just keeps flipping side to side.
Here is my Script.Sorry if this is a dumb question but I am new at coding games especially with Unity.


using UnityEngine;

public class Player1Movement : MonoBehaviour
{
Rigidbody player;
Vector3 movement;
Animator animate;
public float speed = 2;
public Quaternion defaultRotation;
void Start()
{
player = GetComponent();
animate = GetComponent();
}

void FixedUpdate()
{
    float h = Input.GetAxisRaw("Horizontal");
    float y = Input.GetAxisRaw("Jump");
    Move(h,y);
    Animation(h, y);
    Rotation();
}
void Move(float h,float y)
{
    movement.Set(h, y, 0f);
    movement = movement.normalized * speed * Time.deltaTime;
    player.MovePosition(transform.position + movement);
}
void Animation(float h, float y) {
    switch (h)
    {
        case 0:
            animate.Play("Idle");
            break;
    }
}
void Rotation() {
    defaultRotation.Set(0, 90, 0, 0);

    player.MoveRotation(transform.rotation * defaultRotation);
}

}


and if you can answer another question for me with this script my 2 characters just face through each other after some time of pushing against one another why?

To fix ‘quaternions must be unit length’ you can normalize them:

q = q.normalized