Rigidbody Addforce moves really fast randomly

AddForce isn’t a great substitute for transform moving. Calculus and derivatives helps to explain why.

Have you considered just moving the character using physics system, but do it correctly?

With Physics (or Physics2D), never manipulate the Transform directly. If you manipulate the Transform directly, you are bypassing the physics system and you can reasonably expect glitching and missed collisions and other physics mayhem.

Always use the .MovePosition() and .MoveRotation() methods on the Rigidbody (or Rigidbody2D) instance in order to move or rotate things. Doing this keeps the physics system informed about what is going on.