【问题标题】:Time.timeScale not working for Unity.Physics package (DOTS)Time.timeScale 不适用于 Unity.Physics 包(DOTS)
【发布时间】:2021-03-19 23:39:25
【问题描述】:

如果我设置 Time.timeScale = 0;如果设置 Time.fixedDeltaTime = 0,则没有任何变化;我的物理对象开始出现奇怪的行为,但并没有完全停止。 也许有人知道如何更改 DOTS Physics 的 timeScale

【问题讨论】:

  • 相关线程中的某人提到他们可以通过“关闭 StepPhysicsWorld 系统”来完全暂停游戏——如果这是你需要的,而不是仅仅减慢它的速度。不确定这是否有帮助。
  • 唉,我需要放慢速度,就像旧统一物理中的 Time.timeScale 一样

标签: unity3d entity-component-system unity-dots


【解决方案1】:

Unity.Physics\ECS\Base\Systems\StepPhysicsWorld.cs 中的OnUpdate() 函数中,使用您的标量修改 timeStep 值,使其看起来像这样:

float timeStep = Time.DeltaTime * PhysicsSettings.TimeScale;

// Schedule the simulation jobs
Simulation.ScheduleStepJobs(new SimulationStepInput()
{
   World = m_BuildPhysicsWorldSystem.PhysicsWorld,
   TimeStep = timeStep,
   Gravity = stepComponent.Gravity,
   SynchronizeCollisionWorld = stepComponent.SynchronizeCollisionWorld > 0,
   NumSolverIterations = stepComponent.SolverIterationCount,
   SolverStabilizationHeuristicSettings = stepComponent.SolverStabilizationHeuristicSettings

}, m_Callbacks, handle, stepComponent.MultiThreaded > 0);

PhysicsSettings 是我用于存储点物理全局变量的类。

【讨论】:

    猜你喜欢
    • 2023-01-03
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2021-09-07
    • 2018-07-17
    相关资源
    最近更新 更多