MoveTowards用于控制transform旋转时判断数值相等问题
准备用如下代码使gameobject旋转到某一角度:
但发现,当predefAngleX取某些值时(例如45),旋转后if语句总是true,导致无法进入else进行下一步。但此时不管是inspector还是Debug.Log出来transform.localEulerAngles.x和predefAngleX都显示为45。
然后predefAngleX取另外一些值时又正常(旋转后if能变为false)。MoveTowards用在transform.position则总是正常的。这是为什么呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不考虑浮点数精度?!
浮点数精度导致。
把if条件换成: if (Mathf.Approximately(transform.localEulerAngles.x, predefAngleX)){...}
试试。
Mathf.Approximately ( https://docs.unity3d.com/ScriptReference/Mathf.Approximately.html )
可以用来比较相差epsilon的数值。