My character rescales under any object

Hi, i am trying to make a simple platformer and my character is a little square, the game is going very good but there is a problem with crouching, the crouching is going fine but when i leave my crouching button (s, down) while i am under an object, The slow speed and the ability to crouch is still there but the square re-scales

164363-capture.jpg

Here is the code :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

    public CharacterController2D controller;

    public float runSpeed = 40f;
    public float crouchSpeed = 30f; 

    bool jump = false;
    bool crouch = false;

    public float horizontalMove = 0f;

    // Update is called once per frame
    void Update()
    {
        horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;

        if (Input.GetButtonDown("Jump"))
        {
            jump = true;
        }

        if (Input.GetButtonDown("Crouch"))
        {
            crouch = true;
            transform.localScale = new Vector3(0.635f, 0.2559275f, 1);
        } else if (Input.GetButtonUp("Crouch"))
        {
            crouch = false;
            transform.localScale = new Vector3(0.635f, 0.613f, 1);
        }
    }

    void FixedUpdate ()
    {
        controller.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump);
        jump = false;
    }

}

@Sam_da_dev
you need to check if you are squished basically, to do this you need to add the blocks above to a layermask.
in the inspector, top right when the above block is selected you will see a box that says “layer”, create a new layer called ceiling and assign all the overhead obstacles to it.

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class PlayerMovement : MonoBehaviour
 {
 
     public CharacterController2D controller;
 
     public float runSpeed = 40f;
     public float crouchSpeed = 30f; 
 
     bool jump = false;

     bool crouch = false;
 
     public float horizontalMove = 0f;

    public bool isSquished;
    
    
    public float celiDist = 0.5f 
    
    public LayerMask celi;
    
    void Update()
    {
    isSquished = physics2D.OverlapCircle(transfrom.position, celiDist, celi);

horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;
 
         if (Input.GetButtonDown("Jump"))
         {
             jump = true;
         }
 
     // so here you would say 
    
    if (Input.GetButtonDown("Crouch"){
    
    crouch = true;
 transform.localScale = new Vector3(0.635f, 0.2559275f, 1);
    
    } else if (Input.GetButtonUp("Crouch") && !isSquished){
    
    crouch = false;
transfrom.localScale = new Vector3(0.635f, 0.613f, 1);
    }

}

 void FixedUpdate ()
     {
         controller.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump);
         jump = false;
     }
 
 }

i’ve been coding for around 2 months and only on 3D games but im pretty sure this should work. please let me know