2010-03-15 38 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度矢量指向右側)。