您的位置:首页 > 其它

错误提示:transform.position assign attempt for 'XXX' is notvalid。Input rotation is {NaN, NaN, NaN, NaN}

2016-05-04 16:09 531 查看
笔者比较懒没有写博客的习惯啊,好久没有更新博客了,罪过罪过。

最近在做一个类似美国海军密集阵近防炮的目标拦截模块。在设计射击提前量的时候因为失误导致Unity报错。

错误信息:

报错指向了Visual Studio中的这条红色标记的语句

float deserveDistance = AuxiliaryMathLibrary.GetEstimateDistance(firePoint, _target,20f, _target.GetComponent<MissileMove>().GetSpeed());

lockTriger.position = _target.position + _target.forward * deserveDistance;

咋一看红色标记的语句好像没什么问题啊?向量赋值方式也是对的啊?但是为什么就是这句话报错呢?

原因在于deserveDistance 这个变量的值不安全导致。

不就是一个float 变量么?怎么会不安全呢?经过仔细查看发现了一个很低级的问题。

那就是在代码中使用到数学计算时,如果是除法 那么大家要小心了。一定要确保“除数”不得为0

如果除数变量是一个动态获取的,获得一个0怎么办呢?

解决方法就是

if (0 == value)
value = 0.0001f;
这么做即可。

经过对算法的重新优化,现在deserveDistance 变量已经变得安全了。Unity也不再报错。

总结:除数要加为0判断!除数要加为0判断!除数要加为0判断! 重要的事情说3遍。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: