改变2D平面上的位置

时间:2014-02-15 09:42:07

标签: javascript

我正在用javascript编写一个小游戏。我试图移动一个角色,好像从上面往下看。已经有一段时间了,因为我已经完成了任何基础数学,但是我无法使我的一些定位能够正常工作。我想以给定的角度移动一些步骤。输入由程序根据用户按键和模型中的事件生成。

我有以下代码

var xPos = 0, yPos = 0, angle = 45, distance = 1;

var yDelta = Math.sin(angle * Math.PI / 180) * distance,
    xDelta = Math.sqrt(Math.pow(distance, 2) - Math.pow(yDelta, 2));
yPos += yDelta;
xPos += xDelta;

我的测试用例

  • 45度向前迈出1步(0.7071,0.7071)并且是(0.7071,0.7071)
  • 在45度向前迈步1步(-0.7071,-0.7071),但是(0.7071,-0.2928)

我看不出我的移动算法有什么问题。据我所知,数学是正确的。我有一个明显的错误吗?或者我可以采取更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

尝试将xDelta计算为

xDelta = Math.cos(angle * Math.PI / 180) * distance;

对于向后,你应该减去(不添加)xDelta和yDelta到位置。