2011-11-30 68 views
0

如果这个问题是重复的,请纠正我。 我想要做的是在屏幕上有一个可以拿枪的角色。 所以如果背景移动,角色应该随之移动。 如果角色移动,枪应与他/她一起移动。Cocos2d雪碧链接

有谁知道如何做到这一点? 对不起,我是一个新手

亲切的问候

+0

这里是我的猜测:因为Cocos2d中的所有内容都是节点,所以如果字符节点是屏幕节点的子节点,那么当屏幕移动时,字符随之移动。我对么? –

回答

0

你可以使用CCLayer来做你想做的事情。

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

对于不同的对象组,也可以有多个图层。例如,如果你有更多的角色,他们都可以进入同一层。

A CCLayerCCNode派生而来,所以你可以通过将你的角色,武器和背景添加到同一个节点来做同样的事情;但我会建议有两个精灵(角色和武器)的节点,以及背景精灵和角色+武器节点的图层。

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

+0

任何CCNode派生类都可以用于分组/分层节点,CCLayer只是一个选项。在这种情况下,最好将枪CCSprite添加到字符CCSprite中,并将字符添加到图层,节点或场景中。 – LearnCocos2D

+0

@ LearnCocos2D:在我看来,我也表示OP可以决定并使用CCNode而不是CCSprite;我已经概述了CCLayer除了CCNode之外还提供了什么,以便OP可以决定什么是最适合他的。现在,我明白你提出了一个不同的选择,但为什么倒票呢?此外,我会请你仔细阅读我的这句话:“但是我会建议为这两个精灵(角色和武器)以及背景精灵和角色+武器节点设置一个节点”。你真的看到与你有很大的不同吗? – sergio

+0

@sergio:我同意你的意见 –

0

您可以实例化一个新的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"]]; 
+0

同意,但它可能会更好地将枪添加到身体。如果身体旋转或缩放,则枪保持相同的偏移量。 – LearnCocos2D