2017-02-28 2 views
0

J'essaie de détecter si l'utilisateur est en contact avec soit le côté gauche ou à droite de l'écran dans un SKScene.reconnaissance tactile Swift ne reconnaissant pas la moitié de l'écran étant touché

J'ai mis le code suivant ensemble mais il est seulement fournir en sortie « gauche » peu importe où est touché.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 



for touch in touches { 
    let location = touch.location(in: self) 

    if(location.x < self.frame.size.width/2){ 
     print("Left") 
    } 

    else if(location.x > self.frame.size.width/2){ 
     print("Right") 
    } 
} 
} 

Répondre

1

Si vous utilisez la scène par défaut pour un projet SpriteKit, le point d'ancrage est (0,5, 0,5) qui place l'origine de la scène au centre. Si vous voulez tester la position tactile gauche ou à droite, vous devez changer la condition de vérifier à (cela fonctionnera indépendamment du point d'ancrage):

for touch in touches { 
    let location = touch.location(in: self) 

    if(location.x < frame.midX){ 
     print("Left") 
    } 

    else if(location.x > frame.midX){ 
     print("Right") 
    } 
} 

Plus de détails: SKScene

+0

Merci !! Je me suis arraché les cheveux avec ça. –

+0

Vous pouvez utiliser frame.midX pour le rendre un peu plus propre, quel que soit le point d'ancrage. "location.x crashoverride777