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

问题描述

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

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

enter image description here

enter image description here

enter image description here

我已经检查过我的图像在 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,duration: 0)
            let moveLoop = SKAction.sequence([moveLeft,moveReset])
            let moveForever = SKAction.repeatForever(moveLoop)
            
            bg.run(moveForever)
        }
    }
}

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

我还将我的 GameScene.sks 大小更改为:2688 x 1242

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

我知道 Hacking with Swift 帖子中的公式使图像重叠 1px,我尝试从中删除 1 * i 部分,但结果并没有什么不同。

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

enter image description here

我还尝试将它运行到设备中,以防它可能是模拟器中的错误:

解决方法

您的图像在左侧和顶部有一条细长的黑色边框,宽度为 1 像素。它是黑色的。删除它并重试。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...