2016-07-03 1 views
1

У меня есть спрайт, и я бы хотел напечатать некоторый текст, если этот спрайт нажат. Каждый учебник, который я нашел на этом, кажется устаревшим. Как это возможно?Как обнаружить прикосновение в spritekit?

Это должно быть что-то вроде этого:

if Sprite is touched { 
    print("Some Text") 
} 

ответ

4

Если у вас есть пользовательский класс для вашего Sprite просто переопределить метод touchesBegan

Пример

class Player: SKSpriteNode { 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     userInteractionEnabled = true 
    } 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("Did touch Player sprite") 
    } 
} 

Не забудьте для установки userInteractionEnabled = true

+0

К сожалению, забыл сказать, что я не имею различные классов для спрайтов и не хотел бы иметь. Есть ли способ сделать это в классе, который имеет много спрайтов, но я хочу, чтобы только 1 можно было щелкнуть. – Asphys

+0

@Asphys: вам нужно установить 'userInteractionEnabled = false' для спрайтов, которые вы не хотите трогать. Затем в ваш 'Scene.touchesBegan # withEvent #' вы должны найти узел в той же позиции вашего касания 'let node = nodeAtPoint (touch.locationInNode (self))' –

1

В функции touchesBegan или touchesEnded вы можете добавить этот код

for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     if sprite.containsPoint(location) { 
     print("Some Text") 
     } 
}