错误提示: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怎么办呢?
解决方法就是
经过对算法的重新优化,现在deserveDistance 变量已经变得安全了。Unity也不再报错。
总结:除数要加为0判断!除数要加为0判断!除数要加为0判断! 重要的事情说3遍。。。
最近在做一个类似美国海军密集阵近防炮的目标拦截模块。在设计射击提前量的时候因为失误导致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遍。。。
相关文章推荐
- C++ 用两个栈实现一个队列
- vs运行时间的计算
- Callback机制_实现(2)
- KMP 算法实现
- MyEclipse下Maven的安装配置
- POJ 2240 Arbitrage
- JS只能输入数字,数字和字母等的正则表达式
- JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
- Web前端新人笔记之height、min-height的区别详解
- php环境配置
- 第十七课预期策略选择——C#计算器编程教学
- 数据结构与算法--初探门径
- JS转换HTML转义符
- 《淘宝技术这十年》重读笔记
- 跟王老师学异常(九):Log4j基本使用方法
- 数组中的逆序对(归并的思想)
- ffmpeg强制使用TCP方式读取rtsp流
- mysql导出视图没有权限
- JQuery Form AjaxSubmit
- android listview+popuwindow动态显示遇到的问题