Appliquer l'Effet de Zoom Dans cocos2D environnement de jeu?
Je suis en train de travailler sur un jeu avec cocos2D
moteur de jeu et de faire charger tous les sprites
alors qu'il charge le niveau, maintenant que parce que certains de sprites
(obstacles) sont plus grands que 320 pixel, donc il semble difficile de les vérifier. Ainsi pour la commodité souci je veux appliquer ZOOM IN
et ZOOM out
effet, ce qui minimise l'ensemble du niveau de tous les sprites à la fois, et zoom out cas ces résidé à il y de l'ancienne position.
Puis-je y parvenir?
Si oui, comment?
S'il vous plaît dites à propos de zoom par pincement également.
Vous devez vous connecter pour publier un commentaire.
Le zoom est assez simple, il suffit de définir l'échelle de la propriété de vos principaux de la couche de jeu... mais il y a quelques captures.
Lorsque vous redimensionnez le calque, il va décaler la position de la couche. Il ne sera pas automatiquement un zoom avant vers le centre de ce que vous êtes en train de regarder. Si vous avez n'importe quel type de défilement dans votre jeu, vous aurez besoin de tenir compte de cela.
Pour ce faire, définissez la
anchorPoint
de votre couche deccp(0.0f, 0.0f)
, puis de calculer combien votre couche a changé, et la repositionner en conséquence.Pincée de zoom est plus facile... suffit de détecter la touchesMoved, puis appelez votre mise à l'échelle de la routine.
[self scale:(distanceDelta/PTM_RATIO) scaleCenter:pinchCenter];
et aussi[self scale:distanceDelta scaleCenter:[self convertToNodeSpace:pinchCenter]];
mais deux d'entre eux (et une combinaison des deux) se déchaîner à chaque fois que je viens à peine de pincement de l'écran.YourLayer * yourLayer = (YourLayer *)[[self parent] findChildByTag:kTagYourLayer]
; là où je#define kTagYourLayer 789
Si tous les sprites ont le même parent, vous pouvez simplement échelle de leur mère et ils vont être mis à l'échelle avec elle, en gardant leurs coordonnées par rapport à la société mère.
ce code à l'échelle de ma Couche par 2 à l'endroit précis
Mon code et il fonctionne mieux que d'autres: