SpriteKit 滚动背景图像显示图像之间的线

SpriteKit scrolling background image showing line between images

我正在学习如何在 iOS 中制作游戏,所以我决定使用我自己的资产复制马里奥兄弟的第一关,只是为了学习如何制作它们。

我现在遇到的问题是,在创建滚动背景时,使用我在 Hacking with Swift 上找到的这个公式,我的图像之间总是有一条线。

我检查过我的图像在 AI 文件中没有边框。 (图片就是上图)

import SpriteKit
import GameplayKit

class GameScene: SKScene {
    private var player = SKSpriteNode()
    private var bg = SKSpriteNode()
    
    override func didMove(to view: SKView) {
        let playerTexture = SKTexture(imageNamed: "player")
        
        player = SKSpriteNode(texture: playerTexture)
        player.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
        
        addBackground()
        self.addChild(player)
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    }
    
    
    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
    
    // MARK: UTILITY FUNCTIONS
    
    func addBackground() {
        let bgTexture = SKTexture(imageNamed: "bg")
        
        for i in 0 ... 1 {
            bg = SKSpriteNode(texture: bgTexture)
            //bg.position = CGPoint(x: (i == 0 ? bgTexture.size().width : bgTexture.size().width - 1) * CGFloat(i), y: self.frame.midY)
            bg.position = CGPoint(x: (bgTexture.size().width * CGFloat(i)) - CGFloat(1 * i), y: 0)
            bg.size.height = self.frame.height
            //bg.anchorPoint = CGPoint.zero
            bg.zPosition = -10
            
            self.addChild(bg)
            
            let moveLeft = SKAction.moveBy(x: -bgTexture.size().width, y: 0, duration: 5)
            let moveReset = SKAction.moveBy(x: bgTexture.size().width, y: 0, duration: 0)
            let moveLoop = SKAction.sequence([moveLeft, moveReset])
            let moveForever = SKAction.repeatForever(moveLoop)
            
            bg.run(moveForever)
        }
    }
}

只需创建一个新项目,复制粘贴它,您应该会看到它运行

我还将 GameScene.sks 尺寸更改为:2688 x 1242

我为使背景全屏显示所做的最后一项更改是按照 中所述设置 LaunchScreen,这似乎是 Xcode 12

中的一个问题

我了解到 Hacking with Swift post 中的公式使图像重叠 1px,我尝试从中删除 1 * i 部分,但结果不是不一样。

我做的另一件事是验证图像是否完美地“连接”在一起,它们确实如此,您在下图中看到的线条来自 AI canvas,两张图像都连接在“仙人掌”。

我也试过 运行 将它放入设备中,以防它可能是模拟器中的错误:

您的图片左侧和顶部有一个 1 像素宽的黑色细边框。它是黑色的。删除它并重试。