插补角度

发布于 2024-09-14 00:41:25 字数 519 浏览 8 评论 0原文

我试图通过设置起点和终点以及 X 帧来进行移动来旋转游戏对象。然后插入起始角度和结束角度即可完成。

它运作良好,但我试图选择尽可能短的路线(而不是“最长的路线”)。 在大多数情况下它可以工作,但如果旋转超过 360 或低于 0,我不知道如何检测它并更改数字。 (例如,如果我想采用从 270 到 90 的最短路线,最短路线会高于 360/0,因此从未使用过,因此 270 应变为 -45 以插值到 90)。 我不擅长解释,而且我不是以英语为母语的人,因此我将使用我所拥有的伪代码。

 thing.start_angle = 180
 thing.end_angle = 90
 thing.angle = interpolate(thing.start_angle, thing.end_angle, position)

我喜欢这种方式(对于“如果角度> max_angle则角度 - 1”的详细时间控制),但我找不到如何检测角度是否会旋转的“规则”...... 我怎样才能知道旋转是否会低于 0 或高于 360,以采取相应的行动?

I am trying to do a rotation of a game object by setting a start and end point and X frames to do the movement. Then interpolate start and end angle to get it done.

It works well, but I am trying to do the shortest possible route as an option (as opposed to "do the longest route").
In most cases it works, but if the rotation goes above 360 or below 0, I don't know how to detect it and alter the numbers. (for example if I want to take the shortest route from 270 to 90, the shortest route goes above 360/0, so is never used, so 270 should become -45 to interpolate to 90).
I am terrible at explaining and I am not native English to round it up, so I will use pseudocode of what I have.

 thing.start_angle = 180
 thing.end_angle = 90
 thing.angle = interpolate(thing.start_angle, thing.end_angle, position)

I like this way (for the detailed time control over a "if angle > max_angle then angle - 1"), but I can't find a "rule" for how to detect if the angle will rotate...
How can I find if the rotation will go below 0 or above 360, to act accordingly?

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

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

发布评论

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

评论(1

你的心境我的脸 2024-09-21 00:41:25

角度将换行

如果thing.end_angle - thing.start_angle >= 180 或 < 则 -180

(假设角度范围为 0 到 379)。

The angle will wrap if

thing.end_angle - thing.start_angle >= 180 or < -180

(assuming an angle range of 0 to 379).

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