Fixed update with Physics.Simulate in Unity

When we set ‘Physics.simulationMode’ to ‘Script’, we can manually control the fixed update using ‘Physics.Simulate’. Here, we observe the differences when ‘Physics.simulationMode’ is placed at the top or bottom of the ‘FixedUpdate()’ function.

First time:

<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Awake</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    Physics.simulationMode </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> SimulationMode.Script;</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">FixedUpdate</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    Debug.</span><span style="color: #62E884">Log</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">$"</span><span style="color: #F286C4">{</span><span style="color: #BF9EEE; font-style: italic">this</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">transform</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">position</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">y</span><span style="color: #F286C4">}</span><span style="color: #DEE492">"</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">    Physics.</span><span style="color: #62E884">Simulate</span><span style="color: #F6F6F4">(Time.fixedDeltaTime);</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>

output:

<span class="line"><span style="color: #BF9EEE">10</span></span>
<span class="line"><span style="color: #BF9EEE">9.996076</span></span>
<span class="line"><span style="color: #BF9EEE">9.988228</span></span>
<span class="line"><span style="color: #BF9EEE">9.976456</span></span>
<span class="line"><span style="color: #BF9EEE">9.96076</span></span>
<span class="line"><span style="color: #BF9EEE">9.94114</span></span>
<span class="line"><span style="color: #BF9EEE">9.917596</span></span>
<span class="line"><span style="color: #BF9EEE">9.890128</span></span>
<span class="line"><span style="color: #BF9EEE">9.858736</span></span>
<span class="line"><span style="color: #BF9EEE">9.82342</span></span>
<span class="line"><span style="color: #BF9EEE">9.78418</span></span>
<span class="line"><span style="color: #BF9EEE">9.741015</span></span>
<span class="line"><span style="color: #BF9EEE">9.693928</span></span>
<span class="line"><span style="color: #BF9EEE">9.642916</span></span>
<span class="line"><span style="color: #BF9EEE">9.587979</span></span>
<span class="line"><span style="color: #BF9EEE">9.529119</span></span>
<span class="line"><span style="color: #BF9EEE">9.466335</span></span>
<span class="line"><span style="color: #BF9EEE">9.399628</span></span>
<span class="line"><span style="color: #BF9EEE">9.328996</span></span>
<span class="line"><span style="color: #BF9EEE">9.254439</span></span>

Second time:

<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">Awake</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    Physics.simulationMode </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> SimulationMode.Script;</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">private</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">void</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">FixedUpdate</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    Physics.</span><span style="color: #62E884">Simulate</span><span style="color: #F6F6F4">(Time.fixedDeltaTime);</span></span>
<span class="line"><span style="color: #F6F6F4">    Debug.</span><span style="color: #62E884">Log</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">$"</span><span style="color: #F286C4">{</span><span style="color: #BF9EEE; font-style: italic">this</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">transform</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">position</span><span style="color: #E7EE98">.</span><span style="color: #F6F6F4">y</span><span style="color: #F286C4">}</span><span style="color: #DEE492">"</span><span style="color: #F6F6F4">);</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>

output:

<span class="line"><span style="color: #BF9EEE">9.996076</span></span>
<span class="line"><span style="color: #BF9EEE">9.988228</span></span>
<span class="line"><span style="color: #BF9EEE">9.976456</span></span>
<span class="line"><span style="color: #BF9EEE">9.96076</span></span>
<span class="line"><span style="color: #BF9EEE">9.94114</span></span>
<span class="line"><span style="color: #BF9EEE">9.917596</span></span>
<span class="line"><span style="color: #BF9EEE">9.890128</span></span>
<span class="line"><span style="color: #BF9EEE">9.858736</span></span>
<span class="line"><span style="color: #BF9EEE">9.82342</span></span>
<span class="line"><span style="color: #BF9EEE">9.78418</span></span>
<span class="line"><span style="color: #BF9EEE">9.741015</span></span>
<span class="line"><span style="color: #BF9EEE">9.693928</span></span>
<span class="line"><span style="color: #BF9EEE">9.642916</span></span>
<span class="line"><span style="color: #BF9EEE">9.587979</span></span>
<span class="line"><span style="color: #BF9EEE">9.529119</span></span>
<span class="line"><span style="color: #BF9EEE">9.466335</span></span>
<span class="line"><span style="color: #BF9EEE">9.399628</span></span>
<span class="line"><span style="color: #BF9EEE">9.328996</span></span>
<span class="line"><span style="color: #BF9EEE">9.254439</span></span>
<span class="line"><span style="color: #BF9EEE">9.17596</span></span>

When ‘Physics.Simulate’ is placed at the bottom, not logging the sphere’s initial altitude. ‘Physics.Simulate’ is just a function, the remaining code will be executed after it is completed.

Leave a Reply

Your email address will not be published. Required fields are marked *