2010-07-14 21 views
0

Je crée une forme statique dans tamia (en utilisant SpaceManager) et y attache un cpCCSprite.Modification d'un point d'ancrage CCSprite lorsqu'il est attaché à un corps statique

Cependant, j'ai besoin que le point d'ancrage de l'image-objet soit décentré, mais lorsque je change le point d'ancrage de l'image-objet, la forme & ne s'aligne plus.

Donc, si je change le point d'ancrage comme ce

[sprite setAnchorPoint:ccp(0.5, 0.3)]; 

Le sprite est dessiné en conséquence, mais je m'y attendais la forme de « déplacer » avec elle. Voici une photo de ce que je veux dire.

how the cannon should look http://www.tomelders.com/bin/cannon.png

Sur la gauche est la forme et l'image-objet aligné correctement. Je n'ai pas changé le point d'ancrage.

Sur la droite est l'image-objet avec un point d'ancrage de ccp(0.5, 0.3)

Je suis également ressasser la forme statique chaque cadre.

Voilà comment il a créé

// create the sensor 
sensor = [spaceMgr addRectAt:pPoint mass:STATIC_MASS width:53 height:81 rotation:0]; 
    sensor->sensor = YES; 
    sensor->collision_type = 2; 

    //Create the sprite 
    CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"bownce-sprites-comic-sized.png"]; 

    barrel = [[cpCCSprite node] initWithShape:sensor texture:texture rect:CGRectMake(3, 428, 53, 82)]; 
    [self addChild:barrel]; 

    // set the ancor point 
    [barrel setAnchorPoint:ccp(0.5, 0.3)]; 
    [barrel setPosition:pPoint]; 

Répondre

7

Ceci est une idée fausse de la façon dont le travail de trous d'ancrage. Le point d'ancrage a rien de à faire avec la position du nœud. Au lieu de cela, c'est le décalage pour la texture de l'objet nœud! Le point d'ancrage par défaut est 0.5, 0.5 ce qui signifie que la texture est centrée sur la position du nœud. Si vous définissez anchorPoint sur 0,0, le coin inférieur gauche de la texture s'aligne sur la position du noeud. Effectivement, la texture se déplace vers la droite et vers le haut. La position du nœud n'a cependant pas changé.

Étant donné que la forme est alignée sur la position du nœud, elle ne bouge pas lorsque vous modifiez le point d'ancrage. La solution la plus simple consiste à modifier l'image, par exemple en augmentant ses dimensions d'un côté, en utilisant uniquement la couleur transparente. J'espère que c'est compréhensible.

+0

Ancien thread mais si vous définissez le point d'ancrage à 0,0 cela signifie-t-il que la position de l'image-objet est la même que celle d'UIKit? –

+1

Pas tout à fait. La position 0,0 d'UIView est dans le coin supérieur gauche de l'écran, s'étendant vers la droite et vers le bas. En ignorant l'orientation de l'axe différent, vous devrez définir le point d'ancrage à 0,1 pour positionner les nœuds cocos2d similaires aux vues UIKit. – LearnCocos2D

+0

FYI Cocos2D 0,0 position est dans le coin inférieur gauche de l'écran. – LearnCocos2D