喜大普奔,两年修复战斗无法造成伤害的漏洞

修改于昨天 10:31236 浏览综合
大量玩家反馈战斗中突然双方没有伤害,或者角色突然瞬移到地图左下角,这个bug极其狡猾,出现情况随机,极难找出复现规律,但是在前些天我调试苹果版本的时候偶然在xcode上命中了断点,错误内容如下。
Infinity or NaN floating point numbers appear when calculating the transform matrix for a Collider.
总所周知,一个bug被找出错误日志,它就离死期不远了。
在ai爸爸的指导下,加上我机智的推理,终于找出错误代码。
fMovementZ = Mathf.SmoothDamp(m_fMovementZ, fMovementZ, ref m_fMovementZDampTemp, 0.15f);
if (fMovementZ != m_fMovementZ)
{
    m_fMovementZ = fMovementZ;
    m_pAnimator.SetFloat(StaticInfo.MovementZ, m_fMovementZ);
}
是因为m_pAnimator收到的m_fMovementZ可能是Infinity or NaN导致的,这个错误发生后,不会只是单纯的报错返回,而是会导致整个物理系统的奔溃,并且爆出大量错误日志导致游戏突然变卡顿,并且有关物理的计算全部失效!!!太可怕了!前些年我都一直以为是物理检查的算法有问题又或者是有关无敌的法术没回收,最后却发现是和物理计算毫无关系的动画导致的!
这个堵了2年的便秘终于通了,真是爽啊,最后祝大家新年愉快!
TapTap
6
9