はじめに
今回はPhysics.autoSimulationを利用して物理演算のシミュレートのオン・オフを切り替えるという記事になります。

Physics.autoSimulationとは?
UnityEngine.Physicsクラスのstatic変数であるautoSimulationを切り替える事で物理演算のシミュレートのオン・オフを切り替えられます。
docs.unity3d.com
private void Start() { Physics.autoSimulation = false; }

具体的にシミュレーションってなんやねんということですが、公式ドキュメントには以下のように記載されていました。
Simulation includes all the stages of collision detection, rigidbody and joints integration, and filing of the physics callbacks (contact, trigger and joints).
// DeepL翻訳
シミュレーションには、衝突検出、リジッドボディとジョイントの統合、物理コールバックのファイリング (コンタクト、トリガー、ジョイント) のすべての段階が含まれます。
Physics-Simulate - Unity スクリプトリファレンス
またたまに勘違いされている方がいますが、Physics.autoSimulationをfalseにしたからといってMonoBehaviour.FixedUpdateが動かなくなるわけではありません。
もっと詳しく
実際にProfilerを利用してどの箇所がなくなっているのか確認してみましょう。


具体的にはFixedUpdate.PhysicsFixedUpdateの中身が実行されないようですね(おそらくすぐに抜ける仕様)。
もしかすると他にも関係している処理はあるかもしれませんが(あと2Dもある)、ここが一番負荷的には関係ありそうでした。
手動で物理演算をシミュレートする
公式ドキュメントにも記載されていますが、Physics.autoSimulation = falseの場合でもPhysics.Simulateを利用することで時間(step)を進めることができます。
private void Start() { Physics.autoSimulation = false; } private void Update() { Physics.Simulate(Time.fixedDeltaTime); }