Search Unity

  1. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  2. Improved Prefab workflow (includes Nested Prefabs!), 2D isometric Tilemap and more! Get the 2018.3 Beta now.
    Dismiss Notice
  3. Want more efficiency in your development work? Sign up to receive weekly tech and creative know-how from Unity experts.
    Dismiss Notice
  4. Participate with students all over the world and build projects to teach people. Join now!
    Dismiss Notice
  5. Build games and experiences that can load instantly and without install. Explore the Project Tiny Preview today!
    Dismiss Notice
  6. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice
  7. Want to see the most recent patch releases? Take a peek at the patch release page.
    Dismiss Notice

Custom Physic Rate Parallel with FixedUpdate()

Discussion in 'Physics' started by NDSno1, Oct 10, 2018.

  1. NDSno1

    NDSno1

    Joined:
    Dec 20, 2014
    Posts:
    195
    Hi all,
    In my current project, I'm trying to have a physic calculation that runs at different rate from fixedupdate(). For example, the fixedupdate() rate is 50Hz, then I would like to have a sub task running at 100Hz.
    The problem right now is that everything inside FixedUpdate() will only be updated after FixedUpdate() is done. So something like this, which is what I'm planning to do, is not going to work, because everything inside the substep loop won't be updated unless FixedUpdate() is done:
    Code (CSharp):
    1. timeToProcess += Time.fixedDeltaTime;
    2. totalSubStepTime = 0f;
    3. distanceTraveled = 0f;
    4. subStepFixedDeltaTime = Time.fixedDeltaTime / stepNum; //custom fixed delta time per sub step
    5. while (timeToProcess >= subStepFixedDeltaTime)
    6. {
    7.     velocity += acceleration * totalSubStepTime;
    8.     distanceTraveled += velocity * totalSubStepTime;
    9.     totalSubStepTime += subStepFixedDeltaTime;
    10.     timeToProcess -= subStepFixedDeltaTime;
    11. }
    Anyone got any idea?
    Thank you very much.