Is there a way to stop object movement while keeping player's ability to look around in VR?

I’m trying to create a timer and after that timer expires, essentially pause the game. However, while I’d like to make the objects stop, I’d like to have the player keep their ability to look around. Is this possible? Thanks!

You will need to implement OnEnable for all of your component scripts that are dependent on times, or they may behave strangely when you re-enable them.

You could just add an empty object and nest everything you want to have disabled within that object, then enable/disable that object. The code for that is pretty straight-forward:

// This code should be placed in your scene controller:

public GameObject objectToDisable; // This is set in the inspector

public bool GamePaused
{
    get
    {
        return objectToDisable.activeSelf;
    }
    set
    {
        objectToDisable.SetActive(!value);
    }
}

A more complicated solution is to add a method/variable to your controller script to enable/disable all game objects (except the current one). Then just call this method whenever you want to pause/resume the game.

The following is the general idea, but will probably need tweaks for your usage:

List<Transform> parents;                   // This object's parent transorms in the scene
List<GameObject> disabledObjects; // Currently disabled objects
void Start()
{
    // Initialize the parent and disabled objects lists to be empty
    parents = new List<Transform>();
    disabledObjects = new List<GameObject>();

    // Walk up the hierarchy adding each transform to the parents list
    Transform tfm = this.transform;
    while (tfm != null)
    {
        parents.Add(tfm);
        tfm = tfm.parent;
    }
}

// Called by the timer method to freeze or thaw all game objects in the scene
void SetAllObjectsActiveState(bool active)
{
    // If we are re-activating the objects
    if (active)
    {
        // Loop through all of the previously disabled objects and re-enable them
        foreach (GameObject go in disabledObjects)
        {
            go.SetActive(true);
        }

        disabledObjects.Clear();
    }
    // When we are disabling all objects...
    else
    {
        // Loop through all of the root-level objects that do not contain
        // this object, disable them, and add them to the disabled objects list
        foreach (Transform tfm in this.transform.root)
        {
            // If this transform is already disabled, possibly some other section of code is responsible
            // for it's state, so we don't want to touch it.
            if (parents.Contains(tfm) == false && tfm.gameObject.activeSelf == true)
            {
                disabledObjects.Add(tfm.gameObject);
                tfm.gameObject.SetActive(false);
            }
        }
    }
}