2011-11-30 3 views
0

Si cette question est un double, confirmez moi. Ce que je veux faire est d'avoir un personnage sur l'écran qui peut tenir une arme à feu. Donc, si l'arrière-plan se déplace, le personnage devrait se déplacer avec lui. Et si le personnage bouge, le pistolet devrait bouger avec lui/elle.Cocos2d Sprite lier

Est-ce que quelqu'un sait comment faire cela? Désolé d'être un débutant

Sincères salutations

+0

voici ma conjecture: puisque tout dans Cocos2d est un nœud, si le nœud de caractère est un nœud enfant du nœud d'écran, alors quand l'écran se déplace, le personnage se déplace avec lui. Ai-je raison? –

Répondre

0

Vous pouvez utiliser un CCLayer pour ce que vous voulez faire.

Une CCLayer est une sorte de "conteneur" pour tous les sprites que vous souhaitez contrôler en tant que groupe. Par exemple, vous créez deux CCSprites et les ajoutez à un CCLayer; vous pouvez définir la position des sprites en coordonnées relatives au CCLayer et lorsque le CCLayer se déplace, les sprites vont avec.

Vous pouvez également avoir plusieurs couches, pour différents groupes d'objets. Par exemple, si vous avez plus de caractères, ils pourraient tous aller dans le même calque. Un CCLayer est dérivé de CCNode, donc vous pouvez faire à peu près la même chose en ajoutant votre personnage, son arme, et l'arrière-plan au même nœud; mais je suggère d'avoir un noeud pour les deux sprites (personnage et arme), et un calque pour le sprite d'arrière-plan et le personnage + noeud d'arme.

Un CCLayer, par rapport à un CCNode, ajoute la possibilité de manipuler l'accéléromètre (si vous voulez que votre personnage le suive) et touche.

+0

Toute classe dérivée CCNode peut être utilisée pour grouper/superposer des nœuds, CCLayer n'est qu'une option. Dans ce cas particulier, il vaudra mieux ajouter le pistolet CCSprite au caractère CCSprite et le caractère à un calque, un noeud ou une scène. – LearnCocos2D

+0

@ LearnCocos2D: il me semble que j'ai aussi déclaré que l'OP pouvait décider et utiliser un CCNode au lieu d'un CCSprite; J'ai décrit ce que CCLayer offre en plus de CCNode, de sorte que le PO puisse décider ce qui est le mieux pour lui. Maintenant, je comprends que vous suggérez une option différente, mais pourquoi le vote à la baisse? En outre, je vous invite à lire attentivement cette phrase: "mais je suggère d'avoir un nœud pour les deux sprites (personnage et arme), et un calque pour le sprite d'arrière-plan et le personnage + noeud d'arme". Voyez-vous vraiment une grande différence avec la vôtre? – sergio

+0

@sergio: Je suis d'accord avec vous –

0

Vous pouvez instancier un nouveau CCNode et appeler sa méthode addChild. Habituellement, vous devez sous-classer CCNode et l'appeler Character ou quelque chose. Le CCNode parent contiendrait tous les sprites et ils se déplaceraient avec lui. CCSprite est également une sous-classe de CCNode.

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

D'accord, mais il peut être encore mieux d'ajouter le pistolet sur le corps. Si le corps tourne ou balance, le pistolet reste au même décalage. – LearnCocos2D