Move an object down while rotating

I’m trying to make a Tetris like game with a physics aspect, while I learn coding. I need the block to continue falling towards the ground, while rotating; however, whenever I rotate the object, it moves in the wrong direction. How can I get the block to continue moving downward, while allowing the player to rotate it? The code I have controlling the block is below.

using UnityEngine;
using System.Collections;

public class BlockController : MonoBehaviour
{

	bool isActive = true;
	public int rotNum = 1;

	void Start ()
	{
		StartCoroutine ("DecHeight");
	}

	// Update is called once per frame.
	void Update ()
	{
		if(isActive)
		{
			if(Input.GetMouseButtonDown (0))
			{
				Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
				RaycastHit hit;
				if(Physics.Raycast (ray, out hit))
				{
					if(hit.transform.name == "leftButton")
					{
						transform.Translate (-0.5f, 0f, 0f);
					}
					if(hit.transform.name == "rightButton")
					{
						transform.Translate (0.5f, 0f, 0f);
					}
					if(hit.transform.name == "RCWbutton")
					{
						if(rotNum == 1)
						{
							transform.rotation = Quaternion.Euler (0, 0, 90);
							rotNum ++;
						}
						else if(rotNum == 2)
						{
							transform.rotation = Quaternion.Euler (0, 0, 180);
							rotNum ++;
						}
						else if(rotNum == 3)
						{
							transform.rotation = Quaternion.Euler (0, 0, 270);
							rotNum ++;
						}
						else if(rotNum == 4)
						{
							transform.rotation = Quaternion.Euler (0, 0, 0);
							rotNum = 1;
						}
					}
				}
			}
		}
	}

	//Physics engine updates go here.
	void FixedUpdate ()
	{
		if(!isActive)
		{
			StopCoroutine ("DecHeight");
		}
	}

	void OnTriggerEnter2D(Collider2D col)
	{
		isActive = false;
		rigidbody2D.isKinematic = false;
	}

	IEnumerator DecHeight ()
	{
		while(isActive)
		{
			yield return new WaitForSeconds(0.65f);
			transform.Translate (0f, -0.5f, 0f);
		}
	}
}

Transform.Translate() uses local coordinates by default. That means that if you turn an object, translating on the ‘x’ or ‘y’ will move on the objects x and y. To solve the problem, add the optional fourth parameter to Translate:

 transform.Translate (-0.5f, 0f, 0f, Space.World);

This will change Translate so that it uses World coordinates instead of local coordinates.

Another way is to use child GameObjects. It might not work with physics, because the Rigidbody will need to be on the parent.

BLOCK_PARENT (move this down)
    BLOCK_ROTATION (rotate this)
        Mesh