2011-10-16 77 views
0

我目前製造突破遊戲,並以限定對象的位置或運動的即時使用:(如何實現矢量(矢量數學)?

float mX, mY; 
float speedX, speedY; 

而移動對象我在特定方向上的當前位置添加速度MX + = speedX)。

但我已經讀了很多,我'應該'使用矢量而不是上述,我現在打算做。我已經閱讀了這個向量數學的一些內容,但我不知道如何在我的遊戲中實現這一點。數學本身有很多信息,但是在代碼方面我找不到任何東西。我可以拿出:

float mX, mY; 
float direction; 
float velocity; 

但在這裏我有點卡住了。我知道我應該將對象移動到directionvelocity,可能是時間的因素,但如何?

(順便說一句,i''m用OpenGL-ES Android上使它)

回答

3

的載體在2D有兩個維度:(vx, vy)。這就是你需要的。

你可以通過計算所謂的'單位矢量'來找到方向:一個幅度爲1的矢量指向你要去的方向。 magnitude = sqrt(vx*vx + vy*vy)

您由大小除以兩種組分得到的單位矢量:

您使用此公式計算幅值

(ux, uy) = (vx/magnitude, vy/magnitude) 

如果正在以恆定速度在一時間步驟dt的移動,那麼您在各個方向上移動的距離爲:

(dx, dy) = (vx*dt, vy*dt) 

此假定在該時間段內沒有加速度。

這是所有基本的矢量東西。一點點閱讀可能會有很長的路要走。

+0

你可能知道一些很好的例子,教程或網站嗎? – user717572

+2

在基本向量上有數百萬的書籍和網頁。選一個。這不是掃描頁面和成爲專家的問題。你必須做一些工作來學習它,但它是值得的。啓動Google並查看它帶回的內容。 – duffymo