SceneKit: écrire un mot sur chaque face d'un cube

2»

Réponses



  • Je dois filer, je ferai un essai plus tard.




     


    Ca marche ! ;)

  • DrakenDraken Membre
    février 2017 modifié #33


    Tu veux placer une vue classique sous la sceneView, pour avoir une superposition ? Je présume que c'est réalisable avec remplissant le fond de la scène avec la couleur transparente. Je dois filer, je ferai un essai plus tard.




    a


    Ce n'est pas bien compliqué à  faire. Dans le template SceneKit, Xcode utilise la vue principale du ViewControleur pour afficher SceneKit.



    let sceneView = self.view as! SCNView

    On peut aussi créer une vue spécialisée et la déclarer comme fille de self.view. Cela qui laisse la vue principale disponible pour un autre usage.


    a



    // let sceneView = self.view as! SCNView

    // Création de la sceneView comme une vue fille de la vue principale
    let sceneView = SCNView(frame: self.view.frame)
    sceneView.backgroundColor = UIColor.clear
    self.view.addSubview(sceneView)

    self.view.backgroundColor = UIColor.cyan

    qa


    Si le fond de la sceneView est rempli avec la couleur transparente, elle laisse voir ce qui se trouve en dessous : la vue principale, "peinte" en bleu cyan pour l'exemple. 


    q



    self.view.backgroundColor = UIColor.cyan

    Et voila, il suffit de 3 lignes ..

  • Excellent !


     


    Mais les Labels sont forcément centrés sur les faces du cube ? Tu penses que c'est possible d'écrire le texte dans le coin d'une face ?


  • CéroceCéroce Membre, Modérateur

    Tu penses que c'est possible d'écrire le texte dans le coin d'une face ?

    oui, ça dépend juste de l'endroit où il place le SKLabel.


  • oui, ça dépend juste de l'endroit où il place le SKLabel.




     


    J'étais passé à  côté de ça... o:)



    skLabel.position = CGPoint(x: sceneLabel.size.width/2.0, y: sceneLabel.size.height/2.0)
  • C'est du SpriteKit. La position d'un node SpriteKit (SKLabelNode, SKSpriteNode, etc..) par rapport à  sa scène est défini par sa propriété .position.


     


    Dans la fonction créerMateriau() je place le label au centre de la SKScene.



    skLabel.position = CGPoint(x: sceneLabel.size.width/2.0,
    y: sceneLabel.size.height/2.0)

    Mais c'est tout aussi simple de le positionner dans le coin haut gauche de l'écran



    // SKLAbel dans le coin Haut/Gauche de la SKScene
    let px = skLabel.frame.size.width/2.0
    let py = skLabel.frame.size.height/2.0
    skLabel.position = CGPoint(x: px, y: py)


    Ou le coin Bas/Gauche :



    // SKLAbel dans le coin Bas/Gauche
    let px = skLabel.frame.size.width/2.0
    let py = sceneLabel.frame.height - skLabel.frame.size.height/2.0
    skLabel.position = CGPoint(x: px, y: py)


    EDIT : Grilled par l'animal cornu


     


     


     


  • JérémyJérémy Membre
    février 2017 modifié #38

    Merci !


  • De rien. Je suis en train de préparer un tutoriel sur SpriteKit. Tu m'aides à  entrainer mes muscles pédagogiques.



  • De rien. Je suis en train de préparer un tutoriel sur SpriteKit. Tu m'aides à  entrainer mes muscles pédagogiques.




     


    Ah sympa ! Préviens quand il sera disponible !

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