[Résolu] Ajout d'un SKEmitterNode dans une scene

BenjoBenjo Membre
mars 2014 modifié dans API UIKit #1
Bonjour à  tous,


J'ai commencé SpriteKit il y a peu de temps et j'aimerais ajouter des "particles" à  ma scene. Mais j'ai un petit problème puisque lorsque j'essaye d'ajouter un SKEmitterNode, celui-ci n'apparait pas dans la scene. Voici le code que j'utilise pour ajouter dans MyScene.m :

-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
self.backgroundColor = [SKColor colorWithRed:0 green:0 blue: 20.0f / 255.0f alpha:1];

[self newExhaustNode];
}
return self;
}

- (void)newExhaustNode
{
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@Etoiles ofType:@sks]];

// Place the emitter at the rear of the ship.
emitter.position = CGPointMake(0,-40);
emitter.name = @exhaust;

// Send the particles to the scene.
emitter.targetNode = self.scene;

[self addChild:emitter];

NSLog(@ok);
}

C'est exactement le code que j'ai trouvé dans la doc Apple j'ai simplement remplacé le nom du fichier par le mien. Mais même cette méthode ne marche pas. J'ai longtemps cherché et essayé les solutions que j'ai trouvé sur le web mais rien ne fonctionne.

Je ne sais plus vraiment quoi faire... J'ai joint une capture d'écran pour que vous puissiez voir à  quoi ressemble le fichier de particle.

Quelqu'un aurait-il une solution ?


Merci d'avance :)
Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    Je viens de comparer avec mon code, je n'ai pas de
    emitter.targetNode = self.scene;
    Es-tu sûr que le chemin est bon, et qu'emitter n'est pas nil ?
    Par ailleurs, j'ai déjà  eu des problèmes avec les couleurs des particules. Essaie peut-être avec un autre fichier .sks.
  • BenjoBenjo Membre

    Merci Céroce pour ta réponse. J'ai trouvé ce qui n'allait pas. C'était simplement parce que la position du particle n'était pas dans l'écran. En effet avec spritekit, la position (0, 0) se situe en bas à  gauche de l'écran et non en haut à  gauche. Une simple erreur d'étourderie... Mais le emitter.targetNode = self.scene; n'est pas le problème même si je ne sais plus vraiment à  quoi il sert. Il faut que je regarde dans la doc.


    Merci :)


  • CéroceCéroce Membre, Modérateur

    En effet avec spritekit, la position (0, 0) se situe en bas à  gauche de l'écran et non en haut à  gauche.

    Effectivement, je ne l'avais pas remarqué. On peut aussi déplacer le repère...
  • berfisberfis Membre
    juillet 2014 modifié #5

    Déterrage:


     




    [...] Voici le code que j'utilise pour ajouter dans MyScene.m :



    // Place the emitter at the rear of the ship.
    emitter.position = CGPointMake(0,-40);
    emitter.name = @exhaust;
    [...]
    [self addChild:emitter];
    }



    Est-ce que les étoiles sont censées procurer un fond en déplacement dans la scène du vaisseau ou être émises par lui? En fait, je ne comprends pas (probablement qu'elles "tombent" depuis le haut de l'écran) pourquoi elles sont placées at the "rear" of the ship au lieu d'être in "front" of it?


     


    J'ai un truc qui donne ça, c'est ce que tu veux obtenir?

Connectez-vous ou Inscrivez-vous pour répondre.