笔者比较懒没有写博客的习惯啊,好久没有更新博客了,罪过罪过。
错误信息:
我遇到的报错指向了Visual Studio中的这条红色标记的语句
float deserveDistance = AuxiliaryMathLibrary.GetEstimateDistance(firePoint, _target,20f, _target.GetComponent<MissileMove>().GetSpeed());
lockTriger.position = _target.position + _target.forward * deserveDistance;
咋一看红色标记的语句好像没什么问题啊?向量赋值方式也是对的啊?但是为什么就是这句话报错呢?
原因在于deserveDistance 这个变量的值不安全导致。
不就是一个float 变量么?怎么会不安全呢?经过仔细查看发现了一个很低级的问题。
deserveDistance 这个变量是经过除法算出来的
那就是在代码中使用到数学计算时,如果是除法 那么大家要小心了。一定要确保“除数”不得为0
如果除数变量是一个动态获取的,获得一个0怎么办呢?
解决方法就是
if (0 == value)
value = 0.0001f;
这么做即可。
现在deserveDistance 变量已经变得安全了。Unity也不再报错。
总结:除数要加为0判断!除数要加为0判断!除数要加为0判断! 重要的事情说3遍。。。