Gravity - How to walk on ceiling

I am sorry if this is a duplicate question, but I failed to find an answer that would provide me with the mechanics on what to do. Basically, I am trying to let the player switch gravity, so that he and all the rigidbodies would fall on the ceiling. Problem is, I found out that the character controller is not affected by Physics.gravity, so I am now trying to find an alternate way.

I tried something like

void Update () 
	{
	CharControl.Move(gravityForce * Time.deltaTime);

	}

	void GravitySwitch()
	{
		gravityForce = Physics.gravity;
	}

where I trigger GravitySwitch by a message on the event.

But the jump doesn’t work now, due to the constant movement down. Is it possible to keep the basic mechanics of the CharacterController, and yet make it react to the Physics.Gravity? I need the player to walk on the ceiling and jump “down” just like with normal gravity.

Thanks in advance!

You should give a shot at rigidbody based characters : http://wiki.unity3d.com/index.php/RigidbodyFPSWalker or http://wiki.unity3d.com/index.php/PhysicsFPSWalker