I create a small iOS game app using SpriteKit in Xcode. It's working properly on simulators but in devices it doesn't create nodes. In code I set to create nodes dynamically, it is working On Simulator but not working On devices
@objc func createRoadStrip(){
let leftRoadStrip = SKShapeNode(rectOf: CGSize(width: 10, height: 60))
leftRoadStrip.strokeColor = .white
leftRoadStrip.fillColor = .white
leftRoadStrip.position.x = -187
leftRoadStrip.position.y = 700
leftRoadStrip.zPosition = 10
leftRoadStrip.alpha = 0.4
leftRoadStrip.name = "leftRoadStrip"
addChild(leftRoadStrip)
let rightRoadStrip = SKShapeNode(rectOf: CGSize(width: 10, height: 60))
rightRoadStrip.strokeColor = .white
rightRoadStrip.fillColor = .white
rightRoadStrip.position.x = 187
rightRoadStrip.position.y = 700
rightRoadStrip.zPosition = 10
rightRoadStrip.alpha = 0.4
rightRoadStrip.name = "rightRoadStrip"
addChild(rightRoadStrip)
}
func moveRoadStrip(){
enumerateChildNodes(withName: "leftRoadStrip") { (strip, stop) in
let leftRoadStrip = strip as! SKShapeNode
leftRoadStrip.position.y -= 40
}
enumerateChildNodes(withName: "rightRoadStrip") { (strip, stop) in
let rightRoadStrip = strip as! SKShapeNode
rightRoadStrip.position.y -= 40
}
}
override func update(_ currentTime: TimeInterval) {
//here
moveRoadStrip()
moveTrafficCar()
if(carCanMove){
moveCar(toLeftSide: leftCarToMoveLeft)
moveCar(toRightSide: rightCarToMoveRight)
}
removeItems()
}
I call the Timer (create road strip ) in didMove method and move the road strip in update function
override func didMove(to view: SKView) {
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
physicsWorld.contactDelegate = self
setUp()
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(createRoadStrip), userInfo: nil, repeats: true)
}
override func update(_ currentTime: TimeInterval) {
//here
moveRoadStrip()
}
My device version is
- iOS: 9.0, model iPhone 6