SpriteKit : Centrer un node sur la scène

Bonjour,


 


J'ai une scène carrée dans laquelle j'introduis des SKSpriteNodes comme éléments de décor. J'utilise pour cela une "couche" constituée par un SKNode auquel j'ajoute ces éléments.


 


Je souhaiterais pouvoir faire pivoter cette couche de 90° (passer d'une orientation NS à  une orientation WE, par exemple).


 


Un SKNode est un objet quasi-abstait: il ne dessine rien, il ne sert qu'à  regrouper des objects visuels dans l'arborescence de la SKScene. Mais il a une propriété zRotation (en radians) et on peut le faire pivoter (avec tous ses descendants). Le problème est que son "point d'ancrage" est aux coordonnées (0;0) de la scène (en bas à  gauche). Si je le pivote de 90°, il va disparaà®tre de la scène.


 


C'est bien entendu un problème de coordonnées (encore un). Comment faire? Pivoter puis déplacer? Procéder autrement ?


 


Merci de m'éclairer!


Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    juin 2014 modifié #2
    SKSpriteNode.anchorPoint
    (il s'agit d'une proportion de la taille du sprite: de 0 à  1).
  • Donc je dois utiliser un SKSpriteNode à  la place du SKNode, puisque celui-ci n'a pas de anchorPoint?


  • CéroceCéroce Membre, Modérateur
    Oui, ou un SKShapeNode...

    ça fait un an que je n'ai pas travaillé là -dessus, mais j'ai un doute sur le fait que la rotation se fasse par rapport à  l'origine du répère.
    Tu peux aussi déplacer l'origine de la scène au centre de la vue.
  • Bon j'ai résolu la chose de la manière suivante:



    switch (self.level) {
    case 0:
    break;
    case 1:
    self.wallLayer.zRotation = M_PI/2.0;
    self.wallLayer.position = CGPointMake(4098.0, 0.0);
    break;
    case 2:
    self.wallLayer.zRotation = M_PI;
    self.wallLayer.position = CGPointMake(4098.0, 4098.0);
    break;
    case 3:
    self.wallLayer.zRotation = 3*M_PI/2;
    self.wallLayer.position = CGPointMake(0.0, 4098.0);
    break;
    default:
    break;
    }

    Ma scène fait 4098x4098. Je pivote le node wallLayer et je l'expédie à  chacun des quatre "coins".


     


    J'aurais pu travailler sur des coordonnées centrales pour la scène et le wallLayer, mais cela aurait compliqué le placement des murs par rapport à  wallLayer.


     


    PS. Je n'aime décidément pas les radiants.


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