如果这个问题是重复的,请纠正我。 我想要做的是在屏幕上有一个可以拿枪的角色。 所以如果背景移动,角色应该随之移动。 如果角色移动,枪应与他/她一起移动。Cocos2d雪碧链接
有谁知道如何做到这一点? 对不起,我是一个新手
亲切的问候
如果这个问题是重复的,请纠正我。 我想要做的是在屏幕上有一个可以拿枪的角色。 所以如果背景移动,角色应该随之移动。 如果角色移动,枪应与他/她一起移动。Cocos2d雪碧链接
有谁知道如何做到这一点? 对不起,我是一个新手
亲切的问候
你可以使用CCLayer
来做你想做的事情。
A CCLayer
是你想要作为一个组来控制的所有精灵的一种“容器”。例如,您创建两个CCSprites
并将它们添加到CCLayer;您可以在相对于CCLayer
的坐标中定义精灵位置,并且在CCLayer
移动时,精灵会随之移动。
对于不同的对象组,也可以有多个图层。例如,如果你有更多的角色,他们都可以进入同一层。
A CCLayer
从CCNode
派生而来,所以你可以通过将你的角色,武器和背景添加到同一个节点来做同样的事情;但我会建议有两个精灵(角色和武器)的节点,以及背景精灵和角色+武器节点的图层。
与CCNode
相比,A CCLayer
增加了处理加速度计(如果您希望您的角色跟随它)和触摸的可能性。
任何CCNode派生类都可以用于分组/分层节点,CCLayer只是一个选项。在这种情况下,最好将枪CCSprite添加到字符CCSprite中,并将字符添加到图层,节点或场景中。 – LearnCocos2D
@ LearnCocos2D:在我看来,我也表示OP可以决定并使用CCNode而不是CCSprite;我已经概述了CCLayer除了CCNode之外还提供了什么,以便OP可以决定什么是最适合他的。现在,我明白你提出了一个不同的选择,但为什么倒票呢?此外,我会请你仔细阅读我的这句话:“但是我会建议为这两个精灵(角色和武器)以及背景精灵和角色+武器节点设置一个节点”。你真的看到与你有很大的不同吗? – sergio
@sergio:我同意你的意见 –
您可以实例化一个新的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"]];
同意,但它可能会更好地将枪添加到身体。如果身体旋转或缩放,则枪保持相同的偏移量。 – LearnCocos2D
这里是我的猜测:因为Cocos2d中的所有内容都是节点,所以如果字符节点是屏幕节点的子节点,那么当屏幕移动时,字符随之移动。我对么? –