Несколько анимаций одновременно - PullRequest
0 голосов
/ 02 июля 2010

Я делаю игру Астероиды, но я не могу сыграть более одного взрыва за раз. Просто делай по одному ...

Это мой код, который я вызываю в основном цикле:

for(i = 0; i < MAX_SHOTS; i++) {
    for(j = 0; j < MAX_ASTEROIDS; j++) {
        if(shot[i].CheckCollision(asteroide[j])) {
            shot[i].SetPos(-100, 0);
            explosionSnd.Play();

            numAst = j;
            explosion[numExp++].Enable(true);

            if(numExp == MAX_EXPLOSIONS-1) {
                numExp = 1;
            }
        }
    }
}

for(i = 1; i < MAX_EXPLOSIONS; i++) {
    if(explosion[i].Enable()) {
        explosion[i].SetPos(asteroide[numAst].GetX(), asteroide[numAst].GetY());
        explosion[i].Draw();
        if(explosion[i].GetFrame() == 5) {
            explosion[i].Enable(false);
        }
    }
}

Если я выстрелил в астероид и после того, как выстрелил в другого, анимация обрезается и переходит к новому астероиду.

Любая помощь?

Спасибо.

1 Ответ

4 голосов
/ 02 июля 2010

Внутри вашего второго цикла вы перемещаете каждый взрыв к месту астероида. asteroide[numAst] - вы играете все взрывы, только все в одном месте!

Вы должны только расположитьвзрыв один раз после того, как вы Enable(true) это, когда он создается в первом цикле, а не каждый раз, когда вы рисуете его.

Надеюсь, это поможет.

...