step | 推进物理模拟的时间。 |
在场景中进行物理模拟。
Call this to simulate physics manually when the simulation mode is set to Script. Simulation includes all the stages of collision detection, rigidbody and joints integration, and filing of the physics callbacks (contact, trigger and joints). Calling Physics.Simulate does not cause FixedUpdate to be called. MonoBehaviour.FixedUpdate will still be called at the rate defined by Time.fixedDeltaTime whether simulation mode is set to Script or not, and regardless of when you call Physics.Simulate.
注意,如果将与帧率相关的步长值(例如 Time.deltaTime)传递给物理引擎,则由于可能出现的不可预测的帧率波动,您的模拟将是不确定的。
要获得确定性的物理结果,每次调用 Physics.Simulate 时都应该向其传递一个固定的步长值。通常,step
应该是一个较小的正数。使用大于 0.03 的 step
值可能会产生不准确的结果。
See Also: Physics.simulationMode, SimulationMode.
Here is an example of a basic simulation that implements what's being done in the SimulationMode.FixedUpdate simulation mode (excluding Time.maximumDeltaTime).
using UnityEngine;
public class BasicSimulation : MonoBehaviour { private float timer;
void Update() { if (Physics.simulationMode != SimulationMode.Script) return; // do nothing if the automatic simulation is enabled
timer += Time.deltaTime;
// Catch up with the game time. // Advance the physics simulation in portions of Time.fixedDeltaTime // Note that generally, we don't want to pass variable delta to Simulate as that leads to unstable results. while (timer >= Time.fixedDeltaTime) { timer -= Time.fixedDeltaTime; Physics.Simulate(Time.fixedDeltaTime); }
// Here you can access the transforms state right after the simulation, if needed } }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.