gpt4 book ai didi

iphone - Cocos2d - 射击游戏问题

转载 作者:行者123 更新时间:2023-12-03 20:59:51 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com