При скроллинге фона на iPad фон дергается

Фон состоит из 88 картинок и составляет общую ширину около 18000 пикселей. При движении фона с помощью SKAction.move.

  • на реальном устройстве начиная с iPhone 6 — движение проходит нормально
  • на iPad Pro 11 дюймов — начинается подергивание при движении фона

Может я делаю что то не верно?!

class Tunnel: SKSpriteNode {
        
    static func createTunnel(size: CGSize) -> Tunnel {
        let backgroundTunnel = Tunnel()
        for i in 0...87 {
            let name = String(format: "min_tunnel_%02d", i + 1)
            let tunnel = Tunnel(imageNamed: name)
            tunnel.isUserInteractionEnabled = true
            tunnel.anchorPoint = CGPoint(x: 0.0, y: 0.5)
            tunnel.zPosition = -1
            let tunnelY = size.height / 2
            let tunnelX = CGFloat(i) * tunnel.size.width
            tunnel.position = CGPoint(x: tunnelX, y: tunnelY)

            backgroundTunnel.addChild(tunnel)
            backgroundTunnel.size = CGSize(width: tunnelX, height: tunnel.size.height)
        }

        return backgroundTunnel
    }
    
}

Эта часть взята со сцены:

class GameScene: SKScene {

   fileprivate let tunnelSpeed: CGFloat = 500

   fileprivate var tunnel = SKSpriteNode()

   // создание фона в единый спрайт
   fileprivate func backgroundTunnelSetup() {
       tunnel = Tunnel.createTunnel(size: self.size)
    
       let tunnelEntrance = SKSpriteNode(imageNamed: "tunnel")
       tunnelEntrance.position = CGPoint(x: 355.0 , y: self.size.height / 2)
       tunnelEntrance.zPosition = 20
       tunnel.addChild(tunnelEntrance)
        
       let tunnelExit = SKSpriteNode(imageNamed: "tunnel")
       tunnelExit.xScale = -1
       tunnelExit.zPosition = 20
       tunnelExit.position = CGPoint(x: 14550.0 , y: self.size.height / 2)
       tunnel.addChild(tunnelExit)

       self.addChild(tunnel)
   }

   // движение фона
   fileprivate func moveBackground() {
       let endPosition =  -5000.0 + self.size.width / 2
       let waitAction = SKAction.wait(forDuration: 2.0)
       let distance = distanceBetweenPoints(a: self.tunnel.position, b: CGPoint(x: endPosition, y: self.tunnel.position.y))
       let time = timeToTravelDistance(distance: distance, speed: tunnelSpeed)
        
       let moveAction = SKAction.moveTo(x: endPosition, duration: TimeInterval(time))
       moveAction.timingMode = .easeOut
       let stopAction = SKAction.run { [unowned self] in
           self.stop()
       }
       let sequence = SKAction.sequence([waitAction, moveAction, stopAction])
       tunnel.run(sequence)
    }
}

Ответы (0 шт):