2012-09-05 28 views
1

我最近開始使用JavaScript編寫小型帆布遊戲,並試圖圍繞Vector 2d數學包裹我的頭。我理解矢量的基本知識(就像它們表示一個2d空間中帶有方向的點,並且您可以添加,乘,減和旋轉它們),但我不明白如何在計算方向和速度時應用矢量遊戲中的對象。JavaScript Vector2d數學

退房這個遊戲: http://rem.im/asteroid.html

二維矢量數學驅動的迷你遊戲的一個很好的例子。

偉大的勒布李迪萊爾使用這個JavaScript僞類爲他的矢量計算: https://github.com/sebleedelisle/JSTouchController/blob/master/js/Vector2.js

我讀過矢量數學一些教程,但他們有一個100%的純數學的重點,沒有描述如何用控制太空飛船和子彈等矢量來構建遊戲。

你能指點我一些關於如何在JavaScript遊戲中應用矢量數學的教程嗎?

謝謝!

+0

http://en.wikipedia.org/wiki/Kinematics – mathematician1975

回答

3

您可以將元素的位置看作向量(x,y),該向量還定義了從座標原點(0,0)到此點的方向。

速度是每個時間單位的位置變化率。因此,例如(1,5)意味着每時間單位(比如說每幀),x座標將改變+1,而y座標將改變+5。所以新的位置將是(x,y)+(1,5)=(x + 1,y + 5)

加速度是每時間單位的速度變化率。假設你有(1,1)的加速度,那麼速度將在x方向上改變+1,在y方向上改變+1。例如:對象的當前位置是(100,200),其當前速度是(5,0),加速度是(1,1)。

Position in frame 0: (100,200), velocity (5,0) 
Position in frame 1: (100,200) + (5,0) = (105,200), new velocity (5,0) + (1,1) = (6,1) 
Position in frame 2: (105,200) + (6,1) = (111,201), new velocity (6,1) + (1,1) = (7,2) 

etc. 
+0

所以你所說的是,矢量是應用在遊戲中的每一個對象的更新。矢量的x,y位置與遊戲對象的x,y不一樣嗎?但相反,矢量作爲實際物體的加速度,位置和速度修改器,並應用於每個渲染? – ChrisRich

+0

幾乎...遊戲對象的x,y與對象的位置矢量(x,y)相同,只有速度和加速度用作修飾符,其中速度隨時間改變位置,加速度隨時間改變速度 – devnull69

+0

謝謝devnull,覺得我終於把頭包裹起來了。我不明白的是,對於運動,加速度,速度和重力,你使用多個矢量,這些矢量都相互影響。所以一個向量會將力施加到控制對象位置的另一個向量上,等等。 – ChrisRich