2010-03-15 39 views
2

我的屏幕上的对象有一个VAR旋转(度)。如何做2D矢量移动

我该如何解决它,所以当我推动箭头向前移动,而不仅仅是x ++和y ++?

+0

我建议你澄清你的问题,因为它根本不清楚你在说什么。 – Will 2010-03-15 17:15:28

+0

他有一个面向任何方向(以度为单位)的对象,并且他希望将对象向着它所面对的方向向前移动。现在他有移动键只是为了加减x和y – Pyrolistical 2010-03-15 17:18:59

+0

@pyro这就是我的想法,但我不确定编辑他的问题...... – Will 2010-03-15 17:21:16

回答

6
x += sin(rotation) * speed; 
y += cos(rotation) * speed; 

但它取决于你的旋转方向。此代码将在0度时向上(北)旋转,顺时针方向移动。

+0

0度的北方不是标准。在数学中,0度总是在右边,逆时针增加。 – 2010-03-15 17:20:28

+1

这是一个味道的问题。 – Pindatjuh 2010-03-15 17:22:36

1

使用三角法。

你有角度和运动的长度(这是你的斜边),所以你应该能够使用sin或cos来计算所需的x和y的运动量。

8

不是100%肯定这是你想要的,但我想你想做的事:

x += speed * cos(angle); 
y += speed * sin(angle); 

哪里angle是你的对象的旋转,并xy是它的坐标。 speed是你的对象的速度。

+0

这是0度在0度处开始向右(东)的位置,顺时针移动计数器。 – Pindatjuh 2010-03-15 17:20:38

+0

大声笑,我们的帖子/评论实际上是彼此镜像:P – 2010-03-15 17:21:28

+0

是的,很有趣! :D – Pindatjuh 2010-03-15 17:23:29

1

只是为了澄清,因为这是C#,你会想这样做

double radians = (Math.PI/180)*angleInDegrees; 
x += speed * Math.Cos(radians); 
y += speed * Math.Sin(radians); 

正如其他海报所说,这是基于使用三角申请一个旋转的速度矢量(在此情况下,0度矢量指向右侧)。