В моей программе есть метод addObstacle, который создает прямоугольный SKShapeNode с SKPhysicsBody и скоростью влево.
func addObstacle(bottom: CGFloat, top: CGFloat, width: CGFloat){
let obstacleRect = CGRectMake(self.size.width + 100, bottom, width, (top - bottom))
let obstacle = SKShapeNode(rect: obstacleRect)
obstacle.name = "obstacleNode"
obstacle.fillColor = UIColor.grayColor()
obstacle.physicsBody = SKPhysicsBody(edgeLoopFromPath: obstacle.path!)
obstacle.physicsBody?.dynamic = false
obstacle.physicsBody?.affectedByGravity = false
obstacle.physicsBody?.contactTestBitMask = PhysicsCatagory.Ball
obstacle.physicsBody?.categoryBitMask = PhysicsCatagory.Obstacle
obstacle.physicsBody?.usesPreciseCollisionDetection = true
self.addChild(obstacle)
obstacle.runAction(SKAction.moveBy(obstacleVector, duration: obstacleSpeed))
}
В отдельном методе, называемом endGame, я хочу скрыть все препятствия, существующие в данный момент на экране. Все объекты-препятствия являются приватными, что затрудняет доступ к их свойствам. Если на экране есть только один, я обычно могу получить к нему доступ по его имени. Однако, когда я говорю childNodeWithName("obstacleNode")?.runAction(SKAction.fadeAlphaBy(-1.0, duration: 1.0))
, исчезает только одно из "препятствий"; остальные остаются совершенно непрозрачными. Есть ли хороший способ сделать это? Заранее спасибо (: