首先给出正确的算法,这一点是比较简单的,大家计算后也可以用随处可见的IAS表格来检验自己的结果
查询TXT代码可知,AMA持弓,动作代码为AMA1BOW,由动作代码继续查询TXT代码可知:起始帧计量数(StartingFrame)=0,FrameDataActionFlag=6,FramePerDirection=14,AnimationSpeed=256,且BaseRate=100,HitShift=256
由于要计算最高速度,因此直接取IAS能达到上限,攻速增量(Speed Increase,SI)=75
整理公式得FPA={HitShift*(FrameDataActionFlag-StartingFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
带入数据,=向上取整(256*(6-0)/向下取整((100+75)*256/100))=4
由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1
至此,炮轰的第一击极速即4F
然后计算后续打击,合并公式得FPA={HitShift*(FrameDataActionFlag-CurrentFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
这里就是他犯错的位置了
因为英文术语在此有一定的歧义,导致了他误将CurrentFrame认为是当前的真实帧数(即从第4帧回退50%至第2帧),因此将2带入上述公式,=向上取整(256*(6-2)/向下取整((100+75)*256/100))=3,于是我们就得到了他的错误结果,误将后续打击极速当做了3F
但事实上,这里CurrentFrame只是当前帧的一种计量,实际意义代表了当前帧占了总目标的百分比,所以当攻速增量SI不为0时(即身上有IAS时),CurrentFrame就不等于真实当前帧了。
此时CurrentFrame应为FrameDataActionFlag的50%即6/2=3,将3带入上述公式,=向上取整(256*(6-3)/向下取整((100+75)*256/100))=2
同样,由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1,因此后续打击的第一击即炮轰的第2击,极速=2F
查询TXT代码可知,AMA持弓,动作代码为AMA1BOW,由动作代码继续查询TXT代码可知:起始帧计量数(StartingFrame)=0,FrameDataActionFlag=6,FramePerDirection=14,AnimationSpeed=256,且BaseRate=100,HitShift=256
由于要计算最高速度,因此直接取IAS能达到上限,攻速增量(Speed Increase,SI)=75
整理公式得FPA={HitShift*(FrameDataActionFlag-StartingFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
带入数据,=向上取整(256*(6-0)/向下取整((100+75)*256/100))=4
由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1
至此,炮轰的第一击极速即4F
然后计算后续打击,合并公式得FPA={HitShift*(FrameDataActionFlag-CurrentFrame)/[(BaseRate+SI)*AnimationSpeed/100]}
这里就是他犯错的位置了
因为英文术语在此有一定的歧义,导致了他误将CurrentFrame认为是当前的真实帧数(即从第4帧回退50%至第2帧),因此将2带入上述公式,=向上取整(256*(6-2)/向下取整((100+75)*256/100))=3,于是我们就得到了他的错误结果,误将后续打击极速当做了3F
但事实上,这里CurrentFrame只是当前帧的一种计量,实际意义代表了当前帧占了总目标的百分比,所以当攻速增量SI不为0时(即身上有IAS时),CurrentFrame就不等于真实当前帧了。
此时CurrentFrame应为FrameDataActionFlag的50%即6/2=3,将3带入上述公式,=向上取整(256*(6-3)/向下取整((100+75)*256/100))=2
同样,由于此时一个完整动作未完成,因此下一步的动作动画从下一帧开始,即公式末尾不减1,因此后续打击的第一击即炮轰的第2击,极速=2F










