Generally I recommend calling physics.start() then immediately calling physics.pause(). I personally don’t like executing code the main chunk of the scene. I personally add those two calls to my scene:create(), but if you’re calling composer.removeScene() to unrequire the module it doesn’t really matter.
Pausing is important though. If you have any transition delays in the scene, say 500ms then your physics bodies have a half second of interaction before your scene is on the screen. So either at the top of the scene or in scene:create()
physics.start() physics.pause()
Then in your scene’s “did” phase:
physics.start()
This will resume the simulation after the scene is on the screen. If you start after a pause in the “will” phase, you’re back into dealing with physics running before the transition completes.
Then in scene:hide()'s “will” phase call:
physics.pause()
to stop the simulation from running.
Rob