重叠的对象 - 帮助

时间:2011-08-19 21:17:45

标签: actionscript-3

请有人帮我解决以下问题:

在我的游戏中,当你击落敌人时会出现分数。到目前为止,这种方法有效但当击落时敌人彼此太靠近时它们重叠。 现在我想做的是防止分数重叠。我的基本想法是循环分数数组并检查彼此的距离。 问题是它不起作用。有人可以帮忙吗?

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 个答案:

答案 0 :(得分:1)

嗯,你似乎缺少一些代码来一些你在oldtempScoreXoldtemScoreTwoX中计算的值。显然根据计算没有任何实际移动的东西......

另外,如果一个物体向左碰撞,因为它与右边有一个近邻,然后向右碰撞,因为它现在与左边有一个近邻,会怎么样?

另外还有:你似乎盲目地向西北方向oldtempScore和向东南方向oldtempScoreTwo方向碰撞,而没有真正检查它们的相对位置是否合理。