2014-02-15 48 views
0

我正在用javascript写一个小游戏。我试图移动一个角色,好像从上面往下看。自从我做了一些基本的数学计算以来,我已经有一段时间了,我无法让自己的某些定位正常工作。我想以一个给定的角度移动一些步骤。该输入由程序根据用户按键和来自我的模型的事件生成。更改2D平面上的位置

我有以下代码

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)

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

+0

你想做什么?你的游戏的目的是什么? – Sora

+0

@sora我想移动一个角色,好像从上面往下看 –

+0

你使用的是html5 canvas吗?你想在什么位置移动角色?你在使用用户输入吗? – Sora

回答

1

尝试xDelta作为

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

和你应该减去向后(不加)xDelta和yDelta定位。