У меня есть несколько узлов Sprite, загруженных в мою GameScene в случайных местах, но на самом деле это один и тот же узел Sprite, добавленный несколько раз. У меня есть функция в touchesEnded, которая удаляет SpriteNode, как только касание отпускается в том же месте, что и SpriteNode. Это работает только для начального SpriteNode (первый SpriteNode, который был добавлен), но не работает для всех остальных SpriteNode.
Я пытался превратить код «if object.contains (location)» в цикл while, чтобы он повторялся при каждом касании. Это тоже не сработало.
var object = SKSpriteNode()
var objectCount = 0
func spawnObject() {
object = SKSpriteNode(imageNamed: "image")
object.position = CGPoint(x: randomX, y: randomY)
objectCount = objectCount + 1
self.addChild(object)
}
while objectCount < 10 {
spawnObject()
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
for t in touches {
let location = t.location(in: self)
if object.contains(location) {
object.removeFromParent()
}
}
}
Я ожидал, что всякий раз, когда я касаюсь объекта, он исчезает. Но это происходит только с одним объектом, и он отлично работает и, как и ожидалось, с первым объектом, а остальные девять объектов не реагируют.