我正在制作这样的箭射击游戏。一切都是好的。但我意识到如果我画线跟踪我的箭头,它会很棒。所以我在我的调度程序中放了一些代码,这个代码应该绘制箭头所在的圆圈。但是我必须绘制这么多圈子,所以当我拍摄多箭头时,游戏框架并不好。
还有其他更好的方法吗?我已经使用了CCSpriteBatchNode,plist,CCSpriteFrameCache。我做了我所能做的一切。我需要帮助非常感谢
这是我的代码
...............
[self schedule:@selector(CollisionDetection:)];
}
- (void)CollisionDetection:(ccTime)dt
{
for (CCSprite *arrow in arrows->arrowsArray)
{
CCSprite *track = [CCSprite spriteWithSpriteFrameName:@"WhiteCircle.png"];
[track setPosition:arrow.position];
[arrows->rootLayer->arrowsSheet addChild:track];
id delete = [CCFadeOut actionWithDuration:1.0];
id deleteAction= [CCSequence actions:delete ,[CCCallFuncN actionWithTarget:self selector:@selector(spriteActionFinished:)], nil];
[track runAction:deleteAction];
.......
答案 0 :(得分:1)
对象的分配是一个很大的开销。如果您的游戏速度变慢,您应该考虑在游戏开始时创建一个箭头池,并且只在您需要时立即触发它。如果它不再可见,只需将其设置为非活动状态,并在下次需要箭头时重复使用它。
答案 1 :(得分:0)
听起来你的问题不是箭头,而是我想象的圆圈也是Cocos对象。您最好学习如何使用opengl命令而不是对象直接将圆形纹理绘制到屏幕上。这会有很大的帮助。
答案 2 :(得分:0)
当有时间关键动画时,我会从CCCallFunc(N)保持清晰,因为它会使调度程序停顿一段时间。当我读你的代码时,你会在每个预定的时间间隔都有一个CallFunc ......嗯。您是否尝试在没有调度程序的情况下运行此程序,即打包并立即启动所有动画,最后使用单个CallFunc?不要在计划间隔中更改位置,而是使用您将跟踪动画同时运行的CCMoveTo。