【问题标题】:SpriteKit scrolling background image showing line between imagesSpriteKit 滚动背景图像显示图像之间的线条
【发布时间】:2021-03-09 04:30:54
【问题描述】:

我正在学习如何在 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,如 this answer 中所述,这似乎是 Xcode 12 中的一个问题

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

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

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

【问题讨论】:

    标签: ios swift sprite-kit infinite-scroll


    【解决方案1】:

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

    【讨论】:

    • 你是对的,它实际上不是黑色而是空白,就像我设法将背景向右移动可能正在处理其他事情一样。我检查了右侧,但没有检查左侧。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2011-09-28
    • 2013-04-30
    • 1970-01-01
    相关资源
    最近更新 更多