【问题标题】:Cocos2d Sprite linkingCocos2d Sprite 链接
【发布时间】:2011-11-30 13:47:59
【问题描述】:

如果这个问题是重复的,请纠正我。 我想做的是在屏幕上出现一个可能拿着枪的角色。 因此,如果背景移动,角色也应该随之移动。 如果角色移动,枪也应该跟着他/她移动。

有人知道怎么做吗? 对不起,我是新手

亲切的问候

【问题讨论】:

  • 这是我的猜测:由于 Cocos2d 中的一切都是节点,如果角色节点是屏幕节点的子节点,那么当屏幕移动时,角色也会随之移动。我说的对吗?

标签: iphone ios linker cocos2d-iphone sprite


【解决方案1】:

您可以使用CCLayer 来完成您想做的事情。

CCLayer 是一种“容器”,用于存放您想要作为一个组进行控制的所有精灵。例如,您创建两个 CCSprites 并将它们添加到 CCLayer;您可以在相对于CCLayer 的坐标中定义精灵位置,当CCLayer 移动时,精灵会随之移动。

您还可以为不同的对象组设置多个图层。例如,如果您有更多字符,它们都可以进入同一层。

CCLayer 派生自 CCNode,因此您可以通过将角色、武器和背景添加到同一个节点来执行几乎相同的操作;但我建议为两个精灵(角色和武器)设置一个节点,为背景精灵和角色+武器节点设置一个图层。

CCNode 相比,CCLayer 增加了处理加速度计(如果您希望您的角色跟随它)和触摸的可能性。

【讨论】:

  • 任何 CCNode 派生类都可以用于对节点进行分组/分层,CCLayer 只是一种选择。在这种特殊情况下,最好将枪 CCSprite 添加到角色 CCSprite,并将角色添加到图层、节点或场景。
  • @LearnCocos2D:在我看来,我也说过OP可以决定和使用CCNode而不是CCSprite;除了 CCNode 之外,我已经概述了 CCLayer 提供的内容,以便 OP 可以决定什么最适合他。现在,我知道您提出了一个不同的选择,但为什么要投反对票?此外,请您仔细阅读我的这句话:“但我建议为两个精灵(角色和武器)设置一个节点,并为背景精灵和角色+武器节点设置一个图层”。你真的觉得和你的有很大不同吗?
  • @LearnCocos2d:你应该更仔细地阅读他的帖子,伙计。他值得被投票支持。
【解决方案2】:

您可以实例化一个新的CCNode 并将其称为addChild 方法。通常你会将 CCNode 子类化并称之为 Character 什么的。父 CCNode 将包含所有精灵,并且它们将随之移动。 CCSprite 也是 CCNode 的子类。

CCNode *character = [[[CCNode alloc] init] autorelease];
[character addChild:[CCSprite spriteWithFile:@"body.png"]];
[character addChild:[CCSprite spriteWithFile:@"gun.png"]];

【讨论】:

  • 同意,但将枪添加到身体上可能会更好。如果身体旋转或缩放,枪保持在相同的偏移量。
猜你喜欢
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
相关资源
最近更新 更多