я делаю 2D приложение, где у меня есть подлодка на фоне воды , я хочу чтобы пока игра идет , этот фон анимировано двигался , как мне это сделать лучше

  private func obstructionWithObstacles() {
        shipsImageView.image = shipsImagesArray.randomElement()
        fishImageView.image = fishImagesArray.randomElement()
        
        self.counterTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(counterPlusOne), userInfo: nil, repeats: true)
        counterTimer.fire()
        
        self.intersectionCheckTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(intersectionCheck), userInfo: nil, repeats: true)
        
        intersectionCheckTimer.fire()
    }
    
    @objc private func counterPlusOne() {
        self.counter += 1
        self.scoreLabel.text = "\(self.counter)"
        
        
        
        if self.counter.isMultiple(of: 10) {
            self.shipsImageView.frame = CGRect(x: self.shipsImageView.frame.width + self.view.frame.maxX, y: 35, width: 75, height: 75)
            self.animatorForShipImageView = UIViewPropertyAnimator(duration: self.timeInterval, curve: .linear, animations: {
                self.shipsImageView.frame.origin.x = self.view.frame.minX - self.shipsImageView.frame.width
            })
            
            self.animatorForShipImageView.startAnimation()
            
        } else if self.counter.isMultiple(of: 7) {
            self.fishImageView.frame = CGRect(x: self.view.frame.maxX + self.fishImageView.frame.width, y: 100, width: 75, height: 75)
            self.animatorForFishImageView = UIViewPropertyAnimator(duration: self.timeInterval - 3, curve: .linear, animations: {
                
                self.fishImageView.frame.origin.x = self.view.frame.minX - self.fishImageView.frame.width
                
            })
            
            self.animatorForFishImageView.startAnimation()
        }
        
        if self.counter.isMultiple(of: 300) {
            self.timeInterval -= 1
        }
    }
    
    @objc private func intersectionCheck() {
        guard let shipsImageView = self.shipsImageView.layer.presentation(),
              let submarineImageView = self.submarineImageView.layer.presentation(),
              let fishImageView = self.fishImageView.layer.presentation() else { return }
        
        let counterResults = CounterResults()
        
        guard let text = self.scoreLabel.text else { return }
        
        if submarineImageView.frame.intersects(fishImageView.frame) || fishImageView.frame.intersects(submarineImageView.frame) || submarineImageView.frame.intersects(shipsImageView.frame) || shipsImageView.frame.intersects(submarineImageView.frame) {
            
            self.boomImageView.frame = CGRect(x: self.submarineImageView.frame.origin.x, y: self.submarineImageView.frame.origin.y , width: self.submarineImageView.frame.width, height: self.submarineImageView.frame.height + 50)
            
            self.fishImageView.removeFromSuperview()
            self.submarineImageView.removeFromSuperview()
            self.shipsImageView.removeFromSuperview()
            
            counterResults.result = text
            
            realmManager.saveResult(result: counterResults)
            
            self.scoreLabel.text = "GAME OVER"
            self.intersectionCheckTimer.invalidate()
            self.counterTimer.invalidate()
            self.counter = 0
        }
    }
}

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