所以我有一个我正在使用 cocos2d 开发的游戏。游戏涉及许多敌方弹丸,以及一些与敌方弹丸相撞的友军弹丸。
敌方和友方射弹都是具有以下属性的对象:
- sprite(用于 CCMoveTo、动作)
- 命中框 (CGRect)
- 旅行时间
- 弹道
它还具有计算旅行时间、轨迹和其他基于随机生成位置确定的方法的方法。
目前我正在做的是在每次产生射弹时创建这些对象,将它们添加到数组(即friendlyProjectiles,enemyProjectiles),遍历这些以进行碰撞检测,并在它们碰撞时释放对象。
在这里为对象使用缓存会更好吗?
例如:
- 在启动时创建 100 个敌方射弹物体,5 个友军射弹物体
- 将这些对象放在堆栈上
- 当产生弹丸时,我没有创建对象,而是从堆栈中弹出
- 当弹丸碰撞并被摧毁时,我没有释放对象,而是将其从层和数组中移除,然后将其推回堆栈
- 当弹丸产生时,我仍然需要计算它的轨迹、速度、距离等,但我不必重新创建对象
这是一个好方法吗?
我对Objective C比较陌生,我会遇到我试图同时推送和弹出堆栈的问题吗?