3 votes

Débutant Swift 3 - Positionner les actifs dans la scène

Je suis un débutant complet à Swift 3 et à la programmation en général, donc ce sera une question incroyablement basique.

J'ai suivi des tutoriels et je suis en train de positionner un SpriteNode en utilisant CGPoint. Le tutoriel recommande ce qui suit pour positionner le nœud de manière centrale en bas de l'écran :

Ground.position = CGPoint(x: self.frame.width / 2, y: 0)

Cependant, cela a pour effet de la coller en haut et à droite de l'écran.

Lorsque j'utilise le code suivant :

Ground.position = CGPoint(x: 0 - self.frame.width / 2, y: 0 - self.frame.height / 2)

Il se positionne au centre du fond comme prévu.

Je ne comprends pas pourquoi cela se produit, car il n'y a pas grand-chose d'autre à faire dans le tutoriel à ce stade pour provoquer cette erreur.

2voto

Nik Points 1519

Définissez le anchorPoint de la scène au coin inférieur gauche au début de votre didMove(toView: SKView) (ou en GameViewController ) :

scene.anchorPoint = CGPoint(x: 0, y: 0)

Gardez à l'esprit que tout ce que vous placez sur la scène est placé sur la base de l'indicateur d'état de la scène. anchorPoint . Ainsi, avec cette anchorPoint l'origine de votre scène est le coin inférieur gauche.

Notez également que si vous utilisez .AspectFill comme votre sceneScaleMode vous n'avez pas besoin d'utiliser self.frame et à la place, définissez la taille de la scène à 768x1024 (portrait)/1024x768 (paysage) puis utilisez simplement les valeurs numériques dans la taille de la scène.

En outre, il y a des avantages à régler vos scènes anchorPoint au centre :

scene.anchorPoint = CGPoint(x: 0.5, y: 0.5)

Cela permet d'adapter plus facilement la scène à la taille de l'iPad et de l'iPhone, et simplifie également le centrage des nœuds.

Voir ce lien pour plus d'informations sur la façon de rendre votre application universelle : Application iOS Universal Device avec SpriteKit, comment mettre à l'échelle les nœuds pour toutes les vues ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X