2009-05-17 6 views
1

Dans cocos2d est-ce que quelqu'un sait comment centrer un sprite? En ce moment, j'ai un sprite qui se déplace à l'endroit où vous touchez sur l'écran. Le problème est que le sprite est aligné sur le coin inférieur gauche. Cela signifie qu'au lieu de descendre, si vous touchez juste un peu plus bas, l'image-objet se déplacera. Merci d'avance!Comment centrer l'alignement d'une image-objet?

Voici mon code ...

(BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint point = [touch locationInView: [touch view]]; 

    [mainSprite do:[MoveTo actionWithDuration:0.5 position:ccp(point.x, 480 - point.y)]]; 

    return YES; 
} 

Répondre

1

L'ancre de transformation par défaut pour les sprites dans Cocos2D est le centre de l'image-objet, il doit se déplacer de telle sorte que le centre de l'image-objet se retrouve dans le touché emplacement comme vous l'avez maintenant. Avez-vous changé l'ancre de transformation de l'image-objet?

La seule autre chose que je peux penser est que si votre mainSprite est un enfant d'un autre CocosNode alors vous devrez peut-être convertir les coordonnées toucher à l'espace de nœud en utilisant cette méthode:

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint; 

... sur le noeud parent. Cependant, je doute que ce soit le problème. Désolé si cela n'est pas utile.

EDIT: OP, si vous lisez ceci, quelle version de Cocos2D utilisez-vous? Je crois que 0,8 (actuellement dans le coffre svn) change la façon dont fonctionne l'ancrage; Pour référence future, il peut être utile pour les autres de savoir avec quoi vous travaillez.

0

Je l'ai fonctionné! Pour toute personne qui veut savoir ici est le code ...

[mainSprite setTransformAnchor:ccp(24.0, 64.5)]; 

24 est la moitié des sprites largeur

64,5 est la moitié de la hauteur de sprites

Questions connexes