Cant fall down while moving.

Greets. I try to make my player rotate and move in actual face direction by using rigidbody and GetAxis. I made it, but i got one problem. When I start and move on some ramp, and fall down with pressed W/UpArrow button i dont fall down. Just falling slowly like a leaf.
When i fall down from that ramp again and get off my finger from button my player fall down like a brick. Why i cant fall down “like a brick” when i press W/UpArrow button? Any solutions?

void FixedUpdate ()
{
	float h = Input.GetAxis ("Horizontal");
	float v = Input.GetAxis ("Vertical");
	transform.Rotate (0f, h * rotates, 0f);
	if (v != 0) 
	{
		swiatlo.GetComponent<Light> ().range = 2;
		rb.velocity = transform.forward * v * speed;

	} 
	else 
	{
		swiatlo.GetComponent<Light> ().range = 1;
	}
}

rb = rigidbody
swiatlo = some gameobject

You’re strictly defining your velocity over and over again. Any downward momentum is lost every frame, so you’re basically only losing height by luck, because the default PhysX calculations for velocity and drag take place immediately AFTER FixedUpdate().

In general, it’s a bad idea to modify velocity directly, where Rigidbodies are intended to be moved through AddForce() instead. If you insist on using direct velocity control to move your object, I would recommend something like:

// C#
// Assuming Rigidbody rather than Rigidbody2D

float currentVerticalSpeed = rb.velocity.y;
rb.AddForce(transform.forward * v * speed + new Vector3(0, currentVerticalSpeed, 0), ForceMode.VelocityChange);