2012-01-12 100 views
0

我有这个游戏像涂鸦跳跃雪碧突然消失了cocos2d

我插在

玩家触发子弹,并删除

我插入的NSLog到目标的玩家一些怪物和子弹这两个所以我知道如果子弹火灾和目标显示

所有在模拟器工作平稳ios 4.0

但是当每次我的设备

子弹上安装它和目标似乎未出现(是只有这两个游戏依然流畅运行)

,但每次我检查控制台我可以看到子弹的NSLog和目标

我尝试了3周不同的手机的iOS 4.0,5.0和4.2

现在即时通讯混乱,如果有什么似乎是问题

我在谷歌检查相同的问题,但我似乎无法找到一个

我也检查拼写和迷你问题,但它仍然发生。

什么似乎是造成这个问题?


PS:应用IM工作是过时的,它是旧版本的cocos2d的。这个 影响它吗?我尝试升级,但我有这么多的错误,我不 知道这就是为什么我回到默认。


妖怪都出现了约0.5秒,然后就会突然消失这是因为spriteMoveFinished的?

这里是代码(目标):

-(void)addTarget { 

    Sprite *target =[Sprite spriteWithFile:@"him.png"]; 


    CGSize winSize = [[Director sharedDirector]winSize]; 
    int minX = winSize.width/6; 
    int maxX = winSize.width - target.contentSize.width/2; 
    int rangeX = maxX - minX; 
    int actualX = (arc4random() % rangeX) + minX; 

    target.position = ccp(actualX,500); 
    NSLog(@"Location:%f",target.position); 
    [self addChild:target]; 

    int minDuration = 2.0; int maxDuration = 4.0; 
    int rangeDuration = maxDuration - minDuration; 
    int actualDuration = (arc4random() % rangeDuration)+minDuration; 

    id actionMove = [MoveTo actionWithDuration:actualDuration position:ccp(actualX, -target.contentSize.height/2)]; 
    id actionMoveDone = [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)]; 
    [target runAction:[Sequence actions:actionMove,actionMoveDone, nil]]; 
    target.tag = 1; 
    [_targets addObject:target]; 
} 

(子弹):

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    AtlasSpriteManager *spriteManager = (AtlasSpriteManager*)[self getChildByTag:kSpriteManager]; 
    AtlasSprite *bird = (AtlasSprite*)[spriteManager getChildByTag:kBird]; 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:[touch view]]; 
    location = [[Director sharedDirector]convertCoordinate:location]; 


    Sprite *projectile = [Sprite spriteWithFile:@"psn.png"]; 

    projectile.position = ccp(bird.position.x,bird.position.y); 

    CGSize winSize = [[Director sharedDirector]winSize]; 

    int offX = location.x - projectile.position.x; 
    int offY = location.y - projectile.position.y; 

    [self addChild:projectile]; 

    float scalarX = 1.0f; 
    if(offX < 0.0f) scalarX = -1.0f; 
    int realX = scalarX * (winSize.width + (projectile.contentSize.width/2)); 
    float ratio = (float) offY/(float) offX; 
    int realY = (realX *ratio) +projectile.position.y; 
    CGPoint realDest = ccp(realX,realY); 

    int offRealX = realX - projectile.position.x; 
    int offRealY = realY - projectile.position.y; 
    float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY)); 
    float velocity = 480/1; 
    float realMoveDuration = length/velocity; 

    [projectile runAction:[Sequence actions:[MoveTo actionWithDuration:realMoveDuration position:realDest], 
          [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)], nil]]; 
    NSLog(@"Shoot!"); 
    projectile.tag = 2; 
    [_projectiles addObject:projectile]; 


} 

感谢我希望这将得到解决......

+0

尝试澄清此问题的条件:启用绘制sprite界限('ccConfig.h'中的'#define CC_SPRITE_DEBUG_DRAW 1'),将纹理更改为某个检查图像,在另一个图像编辑器中重新保存企鹅图像...让我们知道,iDevice究竟发生了什么问题。 – brigadir 2012-01-12 06:55:22

+1

你的纹理可能有问题吗?子弹和目标使用什么样的纹理?和什么大小? – purplelilgirl 2012-01-12 06:42:54

+0

@brigadir我不认为这个问题是关于纹理,因为我试图替代我的目标,并且它也没有出现的雪碧..谢谢 – NoobMe 2012-01-12 09:09:51

回答

2

奇。东西快速尝试将是:

  • 删除设备本身的应用程序(按住应用程序图标,直到“X”出现,并删除它),然后做一个干净的构建。这将强制所有资产在电话上被替换。

  • 您是否启用了视网膜支持?如果是这样,你的资源中是否有一个名为'him-hd.png'的文件损坏?如果检测到视网膜设备,它会先尝试加载那个。

  • 它在视网膜设备的模拟器上失败吗?您可以更改iOSSimulator菜单栏中正在模拟的设备。

  • 当您将图像添加到项目中时,您是否选择了“将项目复制到目标组的文件夹(如果需要)?这很重要,否则图像将不会包含在软件包中

  • 最后,您是否检查过图像的目标成员,以便将其设置为应用目标?您可以通过选择xCode中的图像并查看文件检查器 - >目标成员身份来检查此问题。应用程序旁边应该有一个检查。

+0

我怎么做最后一部分?即时通讯xcode 3.2 我真的很困惑这一点。 〜。〜 – NoobMe 2012-01-12 10:01:02

+0

我似乎记得你可以在xCode,Get Info中右键单击png,它应该在弹出的屏幕上(我认为) – davbryn 2012-01-12 10:26:31

+0

没有目标会员在这里xD,但你认为还有其他人方法?除了你发布的这些......这真的让我很难过。 – NoobMe 2012-01-12 10:29:35

0

我已经有类似的问题,请检查您创建的对象的Z索引。

可能发生的是你正在渲染它们,但是你将它们渲染在你的背景之后,因为你的背景具有更高的(负数接近0),子弹和目标。

检查& _projectiles在做什么,你_targets他们可能会改变Z值

而且良好的措施进行清理&干净的构建

清洁

产品>清洁

Clean Build

产品>保留选项(在键盘上)&点击清洁(应更改为干净的构建)

+0

我试图增加一个z值,但它仍然是一样的... – NoobMe 2012-01-12 03:55:01

+0

仍然存在?有没有其他方法来解决这个 – NoobMe 2012-01-12 09:28:55

1

以前没有提到的一个建议:确保文件名的大小写匹配!

例如,如果文件名为“Him.png”,并且在cocos2d中将图像加载为“him.png”,则该模式可用于模拟器,但在设备上会失败,因为iOS设备具有区分大小写的文件系统。

这不仅限于iOS设备。 Mac OS X用户还可以选择安装可能导致相同问题的区分大小写的文件系统。

因此,最好避免在文件名中使用大写字母。

+0

它的全部在小型大写字母。 him.png – NoobMe 2012-01-12 10:38:28

+0

先生,我已经对这个问题进行了实验,并且发现我的精灵正在出现,但它正在约0.5秒内消失。我试图消除它的运动,然后我看到它出现在屏幕上,所以我猜它的运动导致了这个问题。谢谢,如果你会帮助 – NoobMe 2012-01-13 10:18:29

0

问题是否已解决:

我不认为这是正确的方式...但我试图消除actionMoveDone线

好像当我删除它精灵工作正常是造成这个问题。

我还想知道为什么会发生这种情况...

感谢所有谁回答...

0

我知道这个问题解决了,但是这可能帮助别人......我的问题是,这是添加精灵到现场的代码也被设置box2d的身体,所以当世界步入精灵被移动到屏幕外的位置。修正是在我将精灵放置在场景中时设置身体的位置。