Colliders, RaycastAll and TimeScale == 0

When the user pauses our game an extra window pops up that lets the user change a few game options. At the same time we orient all our UI based on the phones current orientation. All this seems to be working great except when i orient the UI while the game is paused(timeScale = 0) the colliders on our UI objects don’t seem to respond unless in their original position before the game was paused. So i can pause our game and then change our orientation and then not be able to unpause the game unless i change my orientation back to the orientation that the game was paused at.

When i receive a touch input i RaycastAll through the game camera and then process all that was hit. It seems that when i move a collider once the game is paused the raycast can no longer see the collider unless they are in their old position.

If i look in the editor i can see that the colliders are moving and are where i would expect them to be but they are just not registering their new position.

Im pretty sure i understand why this is happening, I think when i set timeScale to 0 its turning on the PhysX engine off, including its updating of references to colliders positions.

Is there a way to force the engine to reevaluate collider positions?

Just FYI this seems to reregister the collider’s position while paused:

// ... Inside of touch code
if(Time.timeScale == 0.0){
    touchObject.collider.isTrigger = !touchObject.collider.isTrigger; // Turn On/Off
    touchObject.collider.isTrigger = !touchObject.collider.isTrigger; // Set Back To Original
}

Don’t know if this is the best method for doing this but seems to do the trick.

Attached is project that illustrates the problem, in case unity wants a test case to fix the problem. While paused it can only be unpaused when the button gets back to its original position.

183374–6508–$brokencolliders_101.zip (489 KB)