给定一个以度为单位的角度,如何使用 x 和 y 找到行进线的逻辑? (数学困境)

发布于 2024-10-17 15:48:03 字数 229 浏览 2 评论 0原文

我正在 HTML5 画布上制作一个简单的游戏,它涉及驾驶一辆小汽车。

向上箭头移动汽车,左右箭头控制汽车。

我已经对旋转进行了排序,但现在它需要在按住向上键时根据其所处的角度移动其 x 和 y 位置。

示例:

角度为0时,向上箭头只会影响y坐标。

角度为 45,向上箭头将以相同的速度影响 x 和 y 坐标。

如果角度是 32,我可以使用什么逻辑?

I am making a simple game in HTML5 canvas, it involves driving a little car.

The up arrow moves the car, the left and right arrow steers it.

I have rotation sorted, but now it needs to move its x and y position when holding the up key, based on what angle it is at.

Example:

Angle is 0, the up arrow will only affect the y coordinate.

Angle is 45, the up arrow will affect both x and y coordinates at an equal pace.

What logic can I use if the angle is say, 32?

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

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

发布评论

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

评论(2

抱猫软卧 2024-10-24 15:48:03

您可以尝试像这样的

   velY = Math.cos(angle * Math.PI / 180) * thrust;
   velX = Math.sin(angle * Math.PI / 180) * thrust;

    x += velX;
    y -= velY;

快速示例,角度只是在每个循环中增加。

http://jsfiddle.net/j5U5h/5/

角度 0 向上,就像您在最初的问题中一样。

这是修改后的 jsfiddle,因此 0 角使您向右移动。

http://jsfiddle.net/j5U5h/7/

 velX = Math.cos(angle * Math.PI / 180) * thrust;
 velY = Math.sin(angle * Math.PI / 180) * thrust;

 x += velX;
 y += velY;

要使 0 最初向右移动,只需更改为:

velX = -Math.cos(angle * Math.PI / 180) * thrust;

You could try something like this

   velY = Math.cos(angle * Math.PI / 180) * thrust;
   velX = Math.sin(angle * Math.PI / 180) * thrust;

    x += velX;
    y -= velY;

Quick example, angle is just incremented every loop.

http://jsfiddle.net/j5U5h/5/

Angle 0 is up like you have in your initial question.

Here is the jsfiddle modified so the angle of 0 moves you to the right.

http://jsfiddle.net/j5U5h/7/

 velX = Math.cos(angle * Math.PI / 180) * thrust;
 velY = Math.sin(angle * Math.PI / 180) * thrust;

 x += velX;
 y += velY;

To make 0 go to the right initially just change to this,

velX = -Math.cos(angle * Math.PI / 180) * thrust;
深者入戏 2024-10-24 15:48:03

您真的是说 90 使两个轴均等地移动吗?在我看来,应该是 45,两个轴均等地移动。

如果 45 同等地移动两个轴:

xfactor = angle * (1/90)
yfactor = (90 - angle) * (1/90)

xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)

如果 90 同等地移动两个轴:

xfactor = (2 * angle) * (1/180)
yfactor = (180 - (2 * angle)) * (1/180)

xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)

Did you really mean that 90 moves both axes equally? It seems to me that it should be 45 moves both axes equally.

if 45 moves both axes equally:

xfactor = angle * (1/90)
yfactor = (90 - angle) * (1/90)

xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)

if 90 moves both axes equally:

xfactor = (2 * angle) * (1/180)
yfactor = (180 - (2 * angle)) * (1/180)

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