Transform.Rotate irrespective of local rotation?

Hello,

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.