我在HTML5画布上制作一个简单的游戏,它涉及驾驶一辆小汽车。
向上箭头移动汽车,左右箭头指示它。
我有旋转排序,但是现在它需要在按住向上键时根据它所处的角度移动其x和y位置。
示例:
角度为0,向上箭头仅影响y坐标。
角度为45,向上箭头将以相同的速度影响x和y坐标。
如果角度是32,
,我可以使用什么逻辑?答案 0 :(得分:11)
你可以试试这样的事情
velY = Math.cos(angle * Math.PI / 180) * thrust;
velX = Math.sin(angle * Math.PI / 180) * thrust;
x += velX;
y -= velY;
快速举例说明,每个循环只增加角度。
角度0与初始问题中的情况相同。
这是修改过的jsfiddle所以角度0会让你向右移动。
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;
答案 1 :(得分:1)
你真的是说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)