插补角度
我试图通过设置起点和终点以及 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
角度将换行
如果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).