早些年写的:)
周期倒计时是游戏中常见的模块,通常服务于资源的生产、体力的回复等等场景。
一般来说有2中实现方式,一种是基于上一次行动的时间(PrevActTime)。另一种是基于下一次行动时间(NextActTime)。但是他们都包含2个基本的要素:周期(interval)和当前时间(current)。
这两种方式只是从不同的角度来观察问题,但是都要解决2个问题:
- 距离下一次行动还有多久?,
- 如果要加速,该怎么处理?
对于第一种方式:
<pre>
|---------------------------------------------------|
Interval
--------|---------------------------------------------------|-----
PrevActTime Current
</pre>
如图所示,第一个行表示周期,第二行表示上一次行动时间和当前时间。
- 距离下一次时间的公式为:(Interval)-(Current-PreActTime)
- 加速的处理方式为:PrevActTime设置为:Current-Interval
对于第二种方式:
<pre>
|---------------------------------------------------|
Interval
----------------------------|-------------------------------|--
current nextActTime
</pre>
如图所示,第一个行表示周期,第二行表示当前时间行动时间和下一次的行动时间。
- 距离下一次时间的公式为:NextActTime - current;
- 加速的处理方式为:NextTime设置为:Current