2012-06-23 56 views
-1

編輯澄清:我正在尋找關於代碼的第二部分的更多信息。它定義了兩個矢量對象,但爲什麼它是direction = normalize(playerPos - enemyPos);而不是direction = normalize(enemyPos - playerPos);enemyPos創建在哪裏?這一點代碼實際上是什麼playerPos = playerPos + direction * velocity;做什麼呢?這段代碼的部分是做什麼的?

所以,我試圖自己學習C#。我的問題是,當我看到代碼時,我想知道所有部件的功能。

我的問題是雙重的:在這裏問這種東西很酷嗎?有人可以解釋下面的代碼嗎?我需要了解每個部分是指這樣我就可以把它變成敵人移動的空間射擊em起來

Vec2d playerPos; 
Vec2d direction; // always normalized 
float velocity; 

Specfically下面我得到上面的命名兩個2D矢量對象,並創建一個變量的代碼稱爲速度。不過,我不確定標準化的評論是關於什麼的。

update() 
{ 
    direction = normalize(playerPos - enemyPos); 
    playerPos = playerPos + direction * velocity; 
} 
+0

是的,在這裏問這種問題很酷,至少我相信。 –

+1

其實並非如此。 :-) [StackOverflow不是語言教程網站](http://meta.stackexchange.com/a/134609/172661)。如果你有特定的問題,你可以在這裏問問他們,但通用的帖子中有一段代碼問「你能告訴我這是幹什麼嗎?」並不合適。幾乎所有語言的教程網站都有**噸**,所以並不意味着它們就是其中之一。 [常問問題](http://stackoverflow.com/faq)很清楚什麼是(和不適合)在這裏問。 (另外,你應該在每個帖子中提出一個問題,因此可以選擇明確的答案。) –

+0

@KenWhite謝謝,請牢記這一點。 – draiden

回答

2

歸一化的矢量被轉換爲unit vectors。因此方向是一組unit vectors或邏輯上只是多個方向的比例。因此,將這些比率乘以速度將使玩家以速度velocity向敵方方向發射。

1

歸一化矢量意味着矢量始終具有長度= 1(單位矢量)。由於方向與幅度無關,爲避免矢量變得太大(這將影響計算的正確性),矢量縮短爲長度1(在內部,座標除以長度原始矢量)。這更像是一個數學概念。