2011-08-19 97 views
0

有人可以幫助我有以下問題請:重疊對象 - 幫助

在我的遊戲似乎有得分,當你擊落敵人。目前這種方法有效,但當擊落時敵人彼此靠得太近時,它們會重疊。 現在我想要做的是防止重疊的分數。我的基本想法是循環訪問數組並檢查彼此的距離。 問題是它不起作用。有人可以幫忙嗎?

private function checkScoreDistance():void 
{ 
scoreManager.scoreCount = scoreManager.scores.length; 
if (scoreManager.scoreCount >= 1) 
{ 
    scoreManager.scoreCount = scoreManager.scores.length - 1; 
    scoreManager.scoreCountTwo = scoreManager.scores.length - 2; 

    scoreOne: for (var scoreCtr:int = scoreManager.scoreCount; scoreCtr >= 0; scoreCtr--) 
    { 

     tempScore = scoreManager.scores[scoreCtr]; 
     tempScore.point.x = tempScore.x; 
     tempScore.point.y = tempScore.y; 
     oldtempScoreX = tempScore.x; 
     oldtempScoreY = tempScore.y; 

     var tempScoreTwo:Score; 
     scoreTwo: for (var scoreCtrTwo:int = scoreManager.scoreCountTwo; scoreCtrTwo >= 0; scoreCtrTwo--) 
     { 
      tempScoreTwo = scoreManager.scores[scoreCtrTwo]; 
      tempScoreTwo.point.x = tempScoreTwo.x; 
      tempScoreTwo.point.y = tempScoreTwo.y; 

      oldtempScoreTwoX = tempScoreTwo.x; 
      oldtempScoreTwoY = tempScoreTwo.y; 

      var scoresX:Number; 
      scoresX = oldtempScoreTwoX - oldtempScoreX; 

      var scoresY:Number; 
      scoresY = oldtempScoreTwoY - oldtempScoreY; 

      var dist:Number; 

      dist = Math.sqrt(scoresX * scoresX + scoresY * scoresY); 

      if (dist <= 25) 
      { 
       oldtempScoreX -= 25; 
       oldtempScoreTwoX += 25; 

       oldtempScoreY -= 25; 
       oldtempScoreTwoY += 25; 
       } 

      } 

     } 
    } 
} 
} 

回答

1

嗯,你似乎缺少一些代碼東西與你oldtempScoreXoldtemScoreTwoX計算值。顯然沒有什麼可以根據計算實際移動任何東西......

另外,如果一個對象被撞到左邊會發生什麼,因爲它有一個右邊的鄰居,然後因爲它現在有一個緊密鄰居往左邊?

另外還有:你似乎一味地將oldtempScore向西北方向傾斜,oldtempScoreTwo向東南方向,而沒有真正檢查它們的相對位置是否合理。

+0

謝謝。我會再試一次,並告訴你它什麼時候工作。:) – drpelz