2011-08-19 95 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