我想写一个演示应用程序来学习如何更好地使用Cocos2d中的精灵表。 到目前为止,我已经准备好了精灵,工作表看起来不错,代码看起来不错,但是精灵没有显示出来! 我有骰子对象包含精灵,和一些function之前select一个随机的脸animation骰子到屏幕上。 这应该就像你在滚动它们一样。 我使用的操作顺序是: 将sprite数据的plist添加到帧caching 创build精灵表批处理节点 初始化Dice对象,select一个随机的面,并将它们添加到精灵表(批处理节点) 将精灵表(批处理节点)添加到游戏图层 这里是整个项目的链接。 随意刺伤它。 https://github.com/rnystrom/MartionDemo 这里是我上面描述的片段,以及Dice对象的作用: // Add spritesheet to the sprite cache [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spritesheet.plist"]; self.spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"spritesheet.png"]; for (int i = 0; i < kNumDice; ++i) { // Create Dice object // CODE BELOW HAPPENS HERE AT initRandom Dice* d = [[Dice alloc] initRandom]; // […]
我想检测一个精灵与另一个精灵的碰撞。 但是我想检查精灵是否被其他精灵的左边部分触摸或者与精灵的右边部分接触。 我正在使用下面的代码来检测碰撞。 但是这会检测整个碰撞(在其他精灵的任何点碰到精灵)。 但是如果精灵被触摸到其他精灵的正面,则想要计数就是碰撞。 if (CGRectIntersectsRect(sprite1.boundingBox, sprite2.boundingBox)) { NSLog(@"sprite1 to delete"); } 有人知道怎么做吗?
我不断得到一个崩溃,说: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'CCSprite: Batched sprites should use the same texture as the batchnode' 我不太清楚这是什么意思。 我GOOGLE了崩溃,但没有结果。 而且这只有当我从我的游戏中的第二个场景回来后才回到我的第一个场景。 我再次检查我的代码,并确保我的精灵表中的所有图像都作为子节点添加到批处理节点。 我也确保在我的应用程序中不在我的精灵表中的图像作为一个孩子添加到我的图层而不是批处理节点。 无论如何是什么原因造成这次崩溃,我该如何解决? 谢谢! 编辑1 :这似乎是发生在我的应用程序的这一行: [self.spriteLeft setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:imageName]]; 我NSLog imageName和它返回:MyImage.png,然后我看我的plist和pvr.ccz,我加载和MyImage.png 肯定在那里。 所以我不知道为什么当一切看起来正确时就崩溃了。 此外,我确保我不使用spriteWithFile在我加载我的精灵表中的图像。
什么是最好的方法来做到这一点? 我看到了CCEaseSineInOut动作,但看起来不像是可以用来做到这一点。 我需要从屏幕的一侧移动到另一侧。 精灵应该在屏幕上以正弦波forms移动。