iphone - Cocos2d - 射击游戏问题

标签 iphone cocos2d-iphone

大家好,我做了一个像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/

相关文章:

ios - 在 UITableViewCell iOS 中播放视频

ios - 从解析中拉出对象后如何从 parse.com 对象访问其他属性/列(swift)

iphone - Cocos2d for iPhone 与 Cocos2d-x

cocos2d-iphone - 在旋转的 CCLayer 上进行触摸

ios - 如何在 ios 中显示 3/4 全屏尺寸的广告?

iphone - 导航栏添加进度条

iphone - 如何通过 Facebook iOS SDK 和 Graph API 邀请 friend 加入我的应用程序

ios - Google 地点自动完成功能无法在 iPhone 上运行

ios - 在cocos2d中用颜色填充一个圆圈

delegates - Cocos2D 2.1 : "Delegate" deprecated in iOS 6. 如何设置这个 AVAudioSession 的委托(delegate)?