Transform.Rotate irrespective of local rotation?


I am having slight difficulty implementing a simple linear projectile like motion for a moving transform. During the time the transform is in the air I want to slowly adjust its rotation so it will gradually face the ground during the motion rather than flying up and falling backwards.
Here is what I have so far:

   if (!rwc.isGrounded) {
	currentAir += Time.deltaTime;
	transform.Rotate (0.5f, 0, 0); //0.5 deg a frame

This works well for a jump where the transform rotation doesn’t change however if I jump at an angle the transform will rotate respective of its local “down” rotation and not the global down rotation I would like - this gives a curved jump motion.

Is there any way I can adjust the x rotation in this way?

You will never match the rotation to the movement using this method. It’s better to adjust the object orientation to direction it’s moving, like this:

Vector3 lastPos;

void Start(){
  lastPos = transform.position;

void Update(){
  Vector3 dir = transform.position - lastPos;
  if (dir.magnitude > 0.2f){ // update direction/lastPos only after at least 0.2 distance 
    transform.forward = dir.normalized; // point the movement direction
    lastPos = transform.position; // update lastPos

This will make the object set its forward direction always to where it’s moving. If you want to align other directions, change the transform vector (use transform.up, for instance).

NOTE: If you want to control the object rotation anyway, define the world space in Rotate, like this:

 transform.Rotate (90 * Time.deltaTime, 0, 0, Space.World); // 90 degrees per second

and multiply the angle by Time.deltaTime, so the rotation speed will be constant and expressed in degrees per second, no matter which’s the framerate.