2017-01-29 1 views
1

Donc j'utilise un spritenode avec une image et je ne définis pas sa position. Assez drôle, j'avais des problèmes de réglage de la position de sorte que je ne l'ai pas fait et par défaut a été mis au centre de la page (pour une raison évidente) qui a fini par être parfait. Donc maintenant, dans ma méthode touchesbegan je cherche à changer l'image si l'image originale a été pressée, donc je vérifie si l'emplacement touché est égal à la position du nœud (de l'image). Alors si c'est vrai, je le remplace par la nouvelle image qui s'appelle "nowaves".Position du SpriteNode par rapport à l'emplacement tactile

for touch in touches 
    { 
     let location = touch.location(in: self) 
     if (location == audioPlaying.position) 
     { 
      audioPlaying = SKSpriteNode(imageNamed: "nowaves") 
     } 

     else 
     { 

Est-ce que vous pensez que j'ai besoin de le lire? Eh bien comme j'ai demandé que je l'ai testé à aucun résultat. Voilà ce que j'ai essayé:

audioPlaying.size = CGSize(width: frame.size.width/13, height: frame.size.height/20) 
    addChild(audioPlaying) 

Si quelqu'un a une idée de ce que le problème est que j'aimerais quelques commentaires, merci: D

Répondre

0

Pour ajouter à @sweeper, j'avais tout mon premier contenu d'image dans la méthode scenedidLoad, plutôt que je créé une nouvelle méthode que j'utilisais déjà pour une autre fonctionnalité pour démarrer le jeu et a la image initiale là et maintenant tout fonctionne bien.

0

Par défaut, la propriété position renvoie les coordonnées du centre de la nœud. En d'autres termes, sauf si vous avez touché le centre exact de l'image-objet, if (location == audioPlaying.position) ne sera jamais vrai. Cependant, vous devez savoir que toucher le centre d'un nœud est pratiquement impossible. Nous utilisons donc une autre méthode. Nous avons juste besoin de vérifier si le nœud touché est le nœud que vous voulez.

let touchedNode = self.nodes(at: touch.location(in: self)).first 
if touchedNode == audioPlaying { 
    // I think setting the texture is more suitable here, instead of creating a new node. 
    audioPlaying.texture = SKTexture(imageNamed: "nowaves") 
} 
+0

Hey Sweeper! C'était donc mon processus de pensée avant même que j'ai testé mon idée initiale. Je savais que ce serait le centre exact et théoriquement je savais que ce serait le cas si l'utilisateur devait LITTERALEMENT toucher x: 0, y: 0 Donc, c'est utile à coup sûr. Je l'ai juste essayé avec l'idée de texture et ça ne semble pas fonctionner, donc j'ai plutôt remplacé l'ancien nœud par un nouveau nœud de cette nouvelle image, qui ne fonctionnait pas aussi bien. Informations sur l'arrière-plan: déclarer le nouveau nœud comme var dans la classe puis initialiser l'image originale dans la fonction de remplacement scenedidLoad que j'ai ajoutée à ma classe! –

+0

@instacatering Que voulez-vous dire par cela ne fonctionne pas? – Sweeper

+0

Bon, alors quand j'utilise votre idée de changer de texture, ça reste. Quand au lieu de changer de texture, je crée complètement un nouveau nœud, il ajoute le nœud (je peux dire à partir du nombre de nœuds dans le coin inférieur droit) mais évidemment l'ancien nœud est toujours là où je dois apprendre pense que je peux trouver via les informations du développeur sur spritekitnodes –