2013-10-24 37 views
0

我搜索無處不在,編碼尋的導彈發現了一些資源,但是與我是一種新的爲ActionScript和編碼一般我真的不能明白什麼不同的位呢,更不用說將它們併入我的遊戲中。的ActionScript 2:自動尋的導彈

我正在製作一個學校項目的滾動射擊遊戲。有一個特殊的「三級」武器的工作原理如下:

  • 武器自動火災時,敵人在範圍內
  • 武器目標最接近的敵人,去對待它
  • 這是一個導彈也是如此,所以它需要的是旋轉運動太
  • 當目標被摧毀的導彈將自毀

我已經有找出最近的目標代碼:

for (var i in enemies) 
     { 
      var min = Infinity; // Set to infinity so the if statement will work 

      var tempDist = getDistance(enemies[i]); // tempDist stores the distance 

      if (tempDist < min && tempDist < 300) 
      { 
       min = tempDist; 
       closestEnemy = enemies[i]; 
      } 
     } 

(getDistance的()是用於查找兩個市政局之間的距離在我的代碼的函數)

我希望它做的是有closestEnemy存儲標識符或「未定義」如果附近沒有目標。尋的導彈MC有一個類,應該通過_root.playership.closestEnemy不斷更新最近敵人的位置。如果它「未定義」,它應該爆炸。

玩家的飛船包含一個稱爲「敵人」的數組,其中包含所有催生敵人的所有身份。我有重載和點火率系統很好,這只是跟蹤問題。

任何幫助將不勝感激,謝謝!

+0

你的具體問題是什麼? –

+0

我只是不確定如何做整個導彈引導的東西 – Kavaeric

回答

1

你需要讓你想怎麼「跟蹤」操作一些決定,即:

  • 它是完美的(即不導彈指向目標,或者它需要時間來打開? )
  • 導彈是否有限速,加速或恆速?

最簡單的方法是將導彈的角度調整爲它和目標之間的矢量角度,例如:angle = atan2(target.y-missile.y, target.x-missile.x。 (原諒我,如果我的AS2語法是不正確的,它已經有一段時間。)

下一步是推進導彈的位置。如果您已經有角從上面制定出來的,你只需要使用一些三角挑開正交分量:

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

您使用的是X,導彈與目標之間的向量的y分量以每幀恆定速度(missile.speed)移動。從那裏,你可以開始添加的東西像加速度(無論是線速度和角速度)。

希望這是有幫助的。

+0

我假設你的意思是: this._rotation = Math.atan2(_root.targetY._y,_root.targetX._x); \t \t \t \t this._x + = projSpeed * Math.cos(this._rotation); \t \t this._y + = projSpeed * Math.sin(this._rotation); 當你說「角度」,「導彈速度」意味着導彈速度的指定變量,而「target.y-missile.y」意味着目標的Y座標時,你的意思是導彈的旋轉? – Kavaeric

+0

確保你採取目標和導彈之間位置*的差異*的反正切,否則你會得到一些奇怪的結果。除此之外,是的! –