起因是我们的塔防模式下,玩家在正常能过的关卡,开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;
}
同理,其它会受到倍速影响的物体,在计算时间间隔的时候,也需要做类似的偏差值处理。