请有人帮我解决以下问题:
在我的游戏中,当你击落敌人时会出现分数。到目前为止,这种方法有效但当击落时敌人彼此太靠近时它们重叠。 现在我想做的是防止分数重叠。我的基本想法是循环分数数组并检查彼此的距离。 问题是它不起作用。有人可以帮忙吗?
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;
}
}
}
}
}
}
答案 0 :(得分:1)
oldtempScoreX
和oldtemScoreTwoX
中计算的值。显然根据计算没有任何实际移动的东西......
另外,如果一个物体向左碰撞,因为它与右边有一个近邻,然后向右碰撞,因为它现在与左边有一个近邻,会怎么样?
另外还有:你似乎盲目地向西北方向oldtempScore
和向东南方向oldtempScoreTwo
方向碰撞,而没有真正检查它们的相对位置是否合理。