Collisions

Hello, I am having some trouble with collisions on my game.

I have a character and an object. I am wanting the character to collect the object when he is touching it and presses the shift key (fire2). I did this with no problem using triggers. So when the character touched the box(object), then pressed the shift key it worked.
This was my code;

function OnTriggerStay( hit : Collider)
{
	if(hit.gameObject.tag == "maincharacter") //main character is my character
   	{
		if(Input.GetButtonDown("Fire2")) //fire 2 is shift
		{
		slotscheck(); //this is the code for the inventory this works fine
		Destroy(gameObject); //destroy the object which this script is attached to
		}
	}
}

However I want those blocks to have colliders so the character cant walk through them, or the character can jump on top of them, but making sure they are still collectable. This was my test code;

function OnCollisionStay(hit : Collision)
{
	if(hit.gameObject.tag == "maincharacter") //main character is my character
   	{
		if(Input.GetButtonDown("Fire2")) //fire 2 is shift
		{
		slotscheck(); //this is the code for the inventory this works fine
		Destroy(gameObject); //destroy the object which this script is attached to
		}
	}
}

please help I really do not no what I am doing wrong. The end result of using that code is no errors, it does give it a Collider, but it will not collect it. please & thanks

I would use OnCollisionEnter rather OnCollisionStay. If your Character is using the CharacterController there will be no Collision, use OnControllerColliderHit instead.