首页 > 解决方案 > 基于 0 到 1 的时间膨胀(减速)及其影响量

问题描述

希望我能解释一下。所以我在做一个游戏,我想控制世界上不同物体的时间流逝。我想要一个可以暂停游戏(所有对象及其计时器)的全局膨胀。我想要一个特定于房间的膨胀,某些对象会受到影响,但其他对象可能不会。我还想要特定于各个实体本身的那些。这就是我的想法:

List<Tuple<double,double>> DilationAffectors = stuff;

此列表将是影响对象的所有 Dilations,以及它们对对象的影响(0 表示没有影响,0.5 表示受影响的一半,1 表示完全影响)。以下逻辑有点像我将其应用于时间的流逝

var elapsedTime = 0.0;
Stopwatch stopwatch = new Stopwatch();
stopwatch.start();
While(true)
{                     //The function in question
    double dilation = getDilation(DilationAffectors);        

    var timeBetween = stopwatch.Elapsed - LastTick;
    elapsedTime += TimeSpan.FromTicks((long)(timeBetween.Ticks * dilation));
    LastTick = stopwatch.Elapsed;
    //...
}

因此,我尝试了 getDilation 函数的多种变体,但我似乎无法正确计算数学。

我似乎无法让不同的扩张一起玩。如果一个膨胀为 0,但以 0 影响对象,它仍然以某些方式影响它。我尝试对它们进行平均,但这不是预期的效果。我似乎无法找到这个数学方程的解。我是否过于复杂了?还是想错了?

标签: c#mathtimepercentagestopwatch

解决方案


推荐阅读