rotate game object on collision

what would be the best way to rotate an object 90 degrees every time a character controller makes collision with a different game object? Example: step on a switch and a cube rotates 90 degrees on specified axis. So far I’ve just got the basic:

public var WORLD : GameObject;

function OnControllerColliderHit(hit : ControllerColliderHit)


        if(hit.gameObject.tag == ("RotateX"))

and after that I’m clueless. seems like i’ve tried just about everything and getting nowhere. Such a simple task but I’ve never dealt with rotation besides animations of rotation on contact. I’m thinking it’s gotta be something like:

var rotationSpeed : float = 2;

var rotationAxis : Quaternion;

WORLD.transform.rotation = rotationAxis(rotationSpeed * Time.deltaTime);

but I’m just not getting anywhere.
any help would be greatly appreciated

You could use a coroutine to rotate 90 degrees - it’s necessary to use an auxiliary flag to block new rotations until the object has completed a 90 degrees rotation, or each time the coroutine is called it generates a new rotation cycle even when the previous hasn’t finished:

public var WORLD : GameObject;
private curAngle: float = 0; // current rotation angle
private rotating = false; // tell when it's rotating
var rotSpeed: float = 90; // how many degrees rotate per second

function OnControllerColliderHit(hit : ControllerColliderHit){
    if (hit.gameObject.tag == ("RotateX") && !rotating){ // if not already rotating... 
        rotating = true; // I'm rotating
        while (curAngle < 90){
            var dAngle = rotSpeed * Time.deltaTime; // how much to rotate this frame
            curAngle += dAngle;                     // updates curAngle...
            World.transform.Rotate(0, dAngle, 0);   // rotates object by the same angle
            yield;  // suspend rotation until next frame
        curAngle -= 90;   // prepare for next 90 degrees rotation
        rotating = false; // I'm not rotating anymore