MoveTowards用于控制transform旋转时判断数值相等问题

发布于 2017-02-13 06:04:54 字数 400 浏览 1008 评论 2

准备用如下代码使gameobject旋转到某一角度:

image.png

但发现,当predefAngleX取某些值时(例如45),旋转后if语句总是true,导致无法进入else进行下一步。但此时不管是inspector还是Debug.Log出来transform.localEulerAngles.x和predefAngleX都显示为45。

然后predefAngleX取另外一些值时又正常(旋转后if能变为false)。MoveTowards用在transform.position则总是正常的。这是为什么呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2020-08-31 06:36:13

不考虑浮点数精度?!

瑾兮 2019-03-06 13:52:05

浮点数精度导致。

把if条件换成: if (Mathf.Approximately(transform.localEulerAngles.x, predefAngleX)){...}

试试。

Mathf.Approximately ( https://docs.unity3d.com/ScriptReference/Mathf.Approximately.html )

可以用来比较相差epsilon的数值。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文