Use Rigidbody2D's Drag to slow down flying character

I have a character that gets launched into the air with
rb.AddForce(direction * punch_strength_value * punch_strength_total);

I want this character to be slowed down the higher he is in the air, creating a “soft-limit” so the character does not go too far up.
I figured this could be done by changing the Rigidbodies drag according to the character’s height, but I was wrong:

public float height_slowdown = 1;
void Update()
    {
        heigth = transform.position.y;
        rb.drag = height * height_slowdown;
    }

Using this, the character launches into the air and is then slowed down very abruptly as if there was an invisible wall (meaning the X value does not change anymore). He then falls very slowly to the ground.

The character starts at X:0 Y:0 if that’s of any help.

How do I make the character to slow down his gain in height the higher he is?

Sounds like your problem is mostly coming from applying drag in all directions. Below are a few ways to apply a drag-like effect exclusively on the Y-axis of the velocity.

//This method removes a percentage of the velocity every frame and gets closer to zeroing that velocity the closer to max_height it gets.
float max_height = 100;
private void Update()
{
	height = transform.position.y;
	float reduceSpeadPercentage = height / max_height;

	Vector3 velocity = rb.velocity;
	velocity.y -= velocity.y * reduceSpeadPercentage;
	rb.velocity = velocity;
}

//This method applies an increasingly powerful downward force the higher you go. Which will make objects flung up higher, fall down faster.
public float height_slowdown = 0.1f;
void Update()
{
	height = transform.position.y;
	float reduceSpeadPercentage = height / max_height;

	Vector3 velocity = rb.velocity;
	velocity.y -= height * height_slowdown;
	rb.velocity = velocity;
}