How to set Rigidbody2D velocity based on rotation

Hello everyone,

i want to find a way to replace this line :

//trans is the transform instance
trans.Translate (Vector3.up * flySpeed * Time.deltaTime);

The reason why i want to do this is because with that code the object act weirdly when it collides with something in front (instead of just stopping it tries to keep pushing giving a weird shaking effect)

The first thing i found is using making something like this :

rigidbody2D.AddRelativeForce (Vector2.up * flySpeed);

It kinda works but it keeps adding force to the object which after few seconds the object speed become ridiculously high

So i think what i need to do is to figure out the velocity of the object based on its rotation, knowing that this is how am controlling the object rotation :

if (Input.GetKey (KeyCode.LeftArrow)) {
						euler.z += rotationSpeed * Time.deltaTime;
				} else if (Input.GetKey (KeyCode.RightArrow)) {
						euler.z -= rotationSpeed * Time.deltaTime;
				}
				trans.eulerAngles = euler;

Thank you

Okay this did the job :

rigidbody2D.AddRelativeForce (Vector2.up * flySpeed);
				if (rigidbody2D.velocity.magnitude > flySpeed) {
						rigidbody2D.velocity = rigidbody2D.velocity.normalized * flySpeed;
				}