0

我正在制作这样的射箭游戏。万事皆安。但我意识到如果我画线跟踪我的箭头,那会很棒。所以我在我的调度程序中的游戏上放了一些代码,应该在箭头所指的地方画圆。但是我要画这么多圈,所以当我射多箭时游戏画面不好。

还有其他更好的方法吗?我已经使用 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];
    .......    
4

3 回答 3

1

对象的分配是一个很大的开销。如果您的游戏运行缓慢,您应该考虑在游戏开始时创建一个箭头池,并且只在需要时才触发它的动作。如果它不再可见,只需将其设置为非活动状态并在下次需要箭头时重新使用它。

于 2011-09-17T10:14:41.537 回答
0

听起来你的问题不是箭头,而是圆圈,我想它们也是 Cocos 对象。您最好学习如何使用 opengl 命令而不是对象直接将圆形纹理绘制到屏幕上。这会有很大帮助。

于 2011-09-17T21:53:28.143 回答
0

当有一个时间紧迫的动画时,我会远离 CCCallFunc(N),因为它可以让调度程序停止很长一段时间。当我阅读您的代码时,您在每个预定的时间间隔都有一个 CallFunc ......嗯。您是否尝试过在没有调度程序的情况下运行它,即一次打包并启动所有动画,最后使用一个 CallFunc?不要将位置更改为计划间隔的一部分,而是使用 CCMoveTo,您将与跟踪动画同时运行。

于 2011-09-18T17:12:51.467 回答