FAQ:
cocos2d pour l'I-Phone : Comment faire tourner un lutin dans un mouvement circulaire How to rotate a sprite in a circular motionFouillez mon cocos2d pour l'I-Phone FAQs & Tutorials
Notez s'il vous plaît que la recherche de blog au bon coin supérieur ne fouille pas mon FAQs et Classes de travaux dirigés.- Notez : ne partagez pas s'il vous plaît de liens de téléchargement directs vers les dossiers PDF, les liens de téléchargement expirent après les minutes de paire!
Utilisez la hiérarchie de Noeud pour votre avantage. Créez un nouveau Noeud (qui ne sera pas visible à moins que vous ne vouliez que ce soit) et ajoutez votre lutin au noeud comme les enfants. Placez l'enfant de lutin un peu loin en le donnant une position de 100, 100 par exemple. Position the sprite child somewhat away by giving it a position of 100, 100 for example.
Maintenant si vous faites tourner le noeud en utilisant la propriété de rotation, au lieu du lutin, le lutin devrait tourner avec le noeud, en le faisant apparaître comme s'il se promène dans un cercle. Le noeud lui-même sera le centerpoint de la rotation.










Le fait d'éclairer le poste. Merci!
Et, évidemment, j'ai quelques-uns la question
- tout est relatif, mais pour le code commun est mieux d'utiliser NSString, NSArray (et payer le prix de créer de nouveaux objets) ou les variables ? Qui peut être les paramètres pour choisir entre chacun ?
- Je me demande si le nouvel I-Phone 4.0′s la plus grande performance sera une édition. Les jeux qui dirigent doucement dans l'I-Phone de 1ers et 2èmes appareils de génération courront probablement trop vite ?
Salut Max,
je doute que les NSMutable* datasets soient des tueurs de performance. Je n'ai pas fait d'épreuves mais je suis assez sûr que si vous ne les changez pas du tout ils joueront probablement aussi bon que les non-variables. Maintenant, une fois vous *do* a besoin de changer les gammes ou les ficelles il est bon de les avoir variable pour que le truc soit fait attention pour vous en coulisses. D'autre part, si vous savez que vous créerez seulement les articles une fois, mais jamais réordonner, enlever ou ajouter que d'autres utilisent alors les non-variables. Pour moi c'est une affaire de cas d'utilisation, plutôt que performance. Now, once you *do* need to change the arrays or strings it’s good to have them mutable so that stuff is taken care for you behind the scenes. On the other hand, if you know that you’ll only be creating the items once but never re-order, remove or add others then use the non-mutable ones. For me it’s a matter of use case rather than performance.
Les jeux ne courront pas plus vite sur de plus nouveaux appareils. cocos2d’s CCDirector s'en assure. Vous vous améliorez framerates évidemment, mais pas plus vite gameplay. Cela tient c'est vrai pour tous les moteurs de jeu modernes. You do get better framerates of course but not faster gameplay. That holds true for all modern game engines.
Salut gaminghorror. Merci pour toutes les grandes informations sur votre blog
le trouvant Vraiment utile.
J'ai voulu demander de votre code de fond de parallaxe au-dessus – je l'utilise dans un projet d'essai, mais ne peux pas sembler finir par le fait de couvrir de tuiles aller tout à fait à côté d'eachother. En d'autres termes, mon lutin que je couvre de tuiles (qui est 480, 320 dans la grandeur) couvre de tuiles, mais quand le nouveau lutin commence, il y a un espace noir environ 25 pixels larges entre le nouvel et le vieux. Là une voie est-elle à elliminate cet espace ? J'ai essayé de fouiller les forums cocos2d et cetera et ai trouvé des informations sur la 2ème projection éteignant et cetera … mais rien de cela ne m'a aidé jusqu'ici … À essayer et illustrer ce que je reçois, c'est ce que je deviens défilant à travers l'écran d'appareil (le x's sont le lutin l'espace blanc est l'espace noir que je reçois) : Is there any way to elliminate this gap? I have tried searching the cocos2d forums etc, and found info on 2D projection turning off etc… but none of that has helped me so far… To try and illustrate what I am getting, this is what I get scrolling across the device screen (x’s are the sprite white space is the black gap I get):
xxxxxxxxxxxxxxx | |xxxxxxxxxxxxxxxx | |xxxxxxxxxxxxxxxxxx | |xxxxxxx
Cela semble être un rejeton de placement, êtes-vous sûrs que les lutins sont exactement 480 pixels à part chacun ? Tous les deux ont besoin aussi d'avoir même anchorPoint. Et si vous changez l'échelle des lutins, le rejeton a besoin d'être aussi réglé convenablement. And if you change the scale of the sprites, the offset also needs to be adjusted appropriately.
Vous pourriez vouloir évaluer le placement avec de plus petits lutins pour qu'au moins deux d'entre eux aillent entièrement sur l'écran.
Salut GamingHorror, merci bien pour la réponse
Si ce matin je me suis réveillé et avais un esprit clair – y a pensé pour le peu de temps - Mon lutin pour le fond est exactement 480×320 – c'est-à-dire screensize. L'espace que je voyais presque a visité 20-30 pixels entre chaque lutin répété. Donc je pensais, hé, à 480, on me donne juste une texture qui est 512 dans le droit de grandeur ? Ainsi peut-être son action d'un plein 512pixel la texture. Donc je suis retourné pour photofaire des achats et ai augmenté ma largeur de lutin à 512 (comme moi wouldnt perdent n'importe quelle performance de toute façon) et y a donné un essai, en utilisant votre code : So I thought, hey, at 480, I am just being given a texture that is 512 in size right? So maybe its doing a full 512pixel texture. So I went back to photoshop, and increased my sprite width to 512 (as I wouldnt lose any performance anyway) and gave this a try, using your code:
CCSprite *background = [CCSprite spriteWithFile:@ "tile1.png"
rect:CGRectMake (0,0, 480*50, 320)];
[moi addChild:background];
[le fond setPosition:ccp (winSize.width/2, winSize.height/2)];
ccTexParams params = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
[background.texture setTexParameters:¶ms];
et cela l'a réglé! Plus aucuns espaces. Merci bien pour les flèches aussi – je n'avais pas pensé à anchorPoints! Merci mille fois pour le grand blog. Je suis souscrit! Thanks so much for the pointers too – I hadn’t thought about anchorPoints! Thanks again for the great blog. I am subscribed!
Ah oui, si vous utilisez GL_REPEAT alors la grandeur d'image doit être un pouvoir de deux. Eg 64×64 ou 512×128
Impressionnant – qui nettoie des choses pour moi et a le sens parfait maintenant. Merci pour la confirmation. Ma parallaxe layered défilante semble douce maintenant! My layered parallax scrolling is looking sweet now!
Ainsi une autre question rapide … je suppose qu'il ne sera pas possible d'utiliser un spritesheet avec GL_REPEAT ? Surtout la voie vous avez besoin de créer un CGRect …
Actuellement je fais d'autres graphiques de spritesheets comme cela :
CCSprite *projectile = [CCSprite spriteWithSpriteFrameName:@ "missile.png"];
Qui sont chargés de mon.plist / spritesheet. Non possible à assigner le fond GL_REPEAT comme cela ?
Comme GL_REPEAT est un paramètre de texture, il s'applique à la texture entière, donc vous aurez besoin d'utiliser une texture d'image simple et la grandeur doit être un pouvoir de 2, eg 128×16 ou 256×256.
Cela exclut aussi l'utilisation de spritesheet.
En utilisant cette technique il travaille bien dans le simulateur, mais sur l'appareil la texture est super-blocky et pixellated. Je dirige cette épreuve sur cocos2d 0.99.5.
Ive a essayé tant avec 256×256 qu'avec 512×512 les textures et le résultat est le même. Le simulateur se répète tout à fait, les étendues d'appareil et pixellates la texture terriblement.
Avez-vous une idée pourquoi cela arrive ?
Hmmm, pas vraiment. Je suppose qu'il pourrait être rattaché à l'étalage de Rétine, évaluez-vous sur un appareil de rétine ?