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

Hen*_*ryz 5 math html5 canvas

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

向上箭头移动汽车,左右箭头操纵它.

我有旋转排序,但现在它需要在按住向上键时根据它所处的角度移动其x和y位置.

例:

角度为0,向上箭头仅影响y坐标.

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

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

Lok*_*tar 11

你可以尝试这样的事情

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

    x += velX;
    y -= velY;
Run Code Online (Sandbox Code Playgroud)

快速示例,角度只是每个循环递增.

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;
Run Code Online (Sandbox Code Playgroud)

为了使0最初向右转,只需改为此,

velX = -Math.cos(angle * Math.PI / 180) * thrust;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在OP中,角度0沿y轴,而您采用通常的数学约定,0度指向x方向. (2认同)