我正在制作一个小行星游戏,但我不能一次玩多个爆炸。一次只做一件事...
这是我在主循环中调用的代码:
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);
}
}
}如果我向一颗小行星射击,在我向另一颗小行星射击后,动画被剪切并转到新的小行星上。
有什么帮助吗?
谢谢。
发布于 2010-07-02 21:22:02
在您的第二个循环中,您正在将每个爆炸移动到小行星asteroide[numAst]的位置-您正在播放所有的爆炸,都在同一个地方!
在第一个循环中创建爆炸时,应该只在Enable(true)它之后定位它一次,而不是每次绘制它时。
希望这能有所帮助。
https://stackoverflow.com/questions/3165964
复制相似问题