大家好,我做了一个像1942(经典射击游戏)一样的射击游戏,但问题来了,当战斗机射出直线子弹时,FPS下降到5~6,屏幕上大约有7~8颗子弹,实际上,游戏中玩家只会出现8颗子弹,当子弹飞出屏幕时,它们会重置到战斗机的中心并变得不可见,所有子弹都是单独的 Sprite ,就像:
Sprites * bullet1 = [Sprite spriteWithFile:@"bullet.png"];
......
Sprites * bullet8 = [Sprite spriteWithFile:@"bullet.png"];
有没有什么方法可以存储大量的子弹而不是一个一个地定义它们? 因为敌人也可能开火,我可以想象 FPS 可能会接近于零......
谁能帮帮我吗?
最佳答案
你可以做一些类似在那里有一个“子弹池”的事情,因为你使用的是cocos,我要做的就是在开始游戏时分配很多子弹。检查您大约需要多少子弹,预先分配它们。
当游戏中的实体需要发射子弹时,它只是向该池请求一颗子弹,您将属性赋予“预先分配”的子弹,子弹出现在屏幕上,当它撞击/消失时然后您将该子弹返回到您的子弹池中。
如果您需要一些代码:
/*You pre-allocate your bullets.*/
for(int i = 0; i < MAX_BULLETS; i++)
{
Bullet *aBullet = [[Bullet alloc] init];
[bulletsArray addObject:aBullet];
[aBullet release];
}
//Then in game when you fire:
Bullet *aBullet = [PoolManager bulletWithSprite:myBulletSprite]; // Where myBulletSprite is PRE allocated and you don't allocate sprites in Game.
关于iphone - Cocos2d - 射击游戏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771442/