处理多倍速下的子弹发射变少问题

起因是我们的塔防模式下,玩家在正常能过的关卡,开2倍速就过去不去了。

最开始以为是navemesh寻路的问题,通过测试发现2倍速的移动是没什么问题的:

然后我们试了下攻速,发现每一百发子弹,二倍速子弹平均少了4个多,测试数据如下:

107,99,107,101,110,109,100,103,109,104
100,95,92,89,102,100,98,91,102,96

这个数据就很有意思了,然后检查了下代码,原来的写法如下:

 bulletTimer += Time.deltaTime;
            if (bulletTimer >= FinalAtkInterval)//攻击间隔
            {
                Debug.LogError("发射子弹");
                bulletTimer = 0;
            }

大致意思是,不断累加Time.deltaTime,当达到攻击间隔的时候发射子弹。

问题就出在这里,我们都知道,Time.deltaTime它不是一个固定值。在相同倍速下差别倒不是太大,但倍速越大这个值就越大。

解决办法其实也很简单,就是把这个偏差值加到bulletTimer中即可:

 bulletTimer += Time.deltaTime;
            if (bulletTimer >= FinalAtkInterval)//攻击间隔
            {
                Debug.LogError("发射子弹");
                bulletTimer = bulletTimer - FinalAtkInterval;
            }

同理,其它会受到倍速影响的物体,在计算时间间隔的时候,也需要做类似的偏差值处理。

猜你喜欢

转载自blog.csdn.net/Tel17610887670/article/details/128898125