перекрывающиеся объекты - помощь - PullRequest
0 голосов
/ 20 августа 2011

Может кто-нибудь помочь мне в решении следующей проблемы:

В моей игре появляются очки, когда вы сбиваете врагов. Это пока работает, но они пересекаются, когда враги были слишком близко друг к другу, когда их сбили. Теперь я хотел бы предотвратить совпадение результатов. Основная идея, которую я имел, состояла в том, чтобы пройтись по списку баллов и проверить расстояние друг от друга. Проблема в том, что это не работает. Может кто-нибудь помочь, пожалуйста?

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 Ответ

1 голос
/ 20 августа 2011

Хм, вам, похоже, не хватает кода для выполнения чего-то со значениями, которые вы вычисляете в oldtempScoreX и oldtemScoreTwoX. По-видимому, на самом деле нет ничего, что могло бы переместить что-либо на основе расчетов ...

Кроме того, что, если объект сталкивается слева, потому что у него есть близкий сосед справа, а затем впоследствии сталкивается справа, потому что теперь у него есть близкий сосед слева?

Также также: Вы, кажется, слепо натыкаетесь oldtempScore на северо-запад и oldtempScoreTwo на юго-восток, фактически не проверяя, что их относительное положение таково, что это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...