2010-12-16 4 views
0

Comment puis-je faire pivoter une image-objet autour d'un point spécifique au lieu du point central?Faire pivoter CCSprite autour d'un point spécifique?

La rotation CCSprite ou l'action CCRotateTo tourne autour du point central. J'essaie de faire pivoter l'image d'un visage. La rotation autour du centre (nez) ne semble pas aussi bonne que de tourner autour d'un point légèrement au-dessous du centre (menton).

Dans Photoshop, il est possible de changer le point d'ancrage pour la rotation. Cela peut-il être fait dans cocos2d-iphone?

+0

MISE À JOUR: J'ai décidé de faire une couche de parent qui est plus grand que mon sprite de sorte que la Le centre du calque parent est au point d'ancrage sur mon sprite. Ensuite, il suffit de faire pivoter le calque parent. –

Répondre

1

La manière la plus évidente serait d'agrandir la taille de votre sprite. Si la hauteur est de 50px, et que le centre de rotation actuel est au milieu (25px) et que vous voulez qu'il soit à 30px, il suffit d'agrandir la toile de votre sprite dans photoshop pour que l'image gagne 10px de transparent espace au fond.

J'espère que cela aide votre problème, je n'ai jamais vu une référence de point d'ancrage pour la rotation dans cocos2d.

+1

depuis la publication de ce, je suis tombé sur cette information http://www.qcmat.com/understanding-anchorpoint-in-cocos2d/ c'est très pertinent et pratique à connaître. – Bongeh

0

Vous devez modifier votre point d'ancrage en conséquence. AnchorPoint sera le centre de votre rotation ccsprite, il commence à partir du bas à gauche (0.0.0.0) vers le haut à droite (1,1). Pour le calculer, obtenir la position de point par rapport à ccsprite, et diviser par la taille de l'image-objet:

//anchorPoint position 
float x = myRotationPosition.x/ mySprite.width; 
float y = myRotationPosition.y/ mySprite.height; 
mySprite.anchorPoint = cpp(x,y); 
//rotate mySprite based on new anchorPoint 
mySprite.rotation = 90; 

espoir qui aide

Questions connexes