【问题标题】:Swift - Add a background image to a Spritekit sceneSwift - 将背景图像添加到 Spritekit 场景
【发布时间】:2016-10-09 23:00:53
【问题描述】:

这是我的代码,我没有为我的图像 InterfaceBakground.jepg 使用资产目录。相反,我只是将这个 2048x1535 的图像拖到项目中。但是图像没有以正确的方式出现。我希望图像显示为背景图像,填满整个屏幕。

import SpriteKit
import GameplayKit
class GameScene: SKScene {

    var background = SKSpriteNode(imageNamed: "InterfaceBakground.jpeg")


    override func didMove(to view: SKView) {
        background.position = CGPoint(x: self.size.height/2, y: self.frame.width/2)

        self.addChild(background)
    }

    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
}

我在网上看到这个,给了我一点启发:

但是,如果您使用的图片与屏幕尺寸完全一致, 它可能不会出现在您期望的位置。这是因为 addChild 添加了新的 默认情况下,精灵在位置 0, 0(左下角)。如果你想 要使用专门针对您的屏幕尺寸的图像,您必须 改变它的位置。

我的问题是,如何改变位置,使其适合不同尺寸显示器的设备?提前致谢。

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    试试这个代码:

    override func didMove(to view: SKView) {
        background.position = CGPoint(x: 0, y: 0)
        background.size.width = self.size.width
        background.size.height = self.size.height
        background.anchorPoint = CGPoint(x: 0.5,y: 0.5)
    
        self.addChild(background)
    }
    

    AnchorPoint (0.5,0.5) 将图像置于其位置的中心。

    【讨论】:

    • 等等,如果这可行,这意味着你的场景的锚点是 0.5、0.5。这意味着您不必将任何内容设置为背景,除了大小(这里的所有变量都是默认变量,除了 self.size.width 和 self.size.height,这会将精灵缩放到场景大小)
    【解决方案2】:

    我不完全确定,但我认为你可以像这样设置 spriteNode 的高度和宽度。为了确定,我还更改了 anchorPoint:

    override func didMove(to view: SKView) {
            background.size.width = self.size.width
            background.size.height = self.size.height
            background.anchorPoint = CGPoint(x: 0, y: 0)
    
    
            self.addChild(background)
        }
    

    【讨论】:

    • 不,这行不通。图片不合适。
    • 没有锚点,如果他的场景锚点在0,0,那么这将起作用
    • 你完全正确,我不确定,只是知道你可以这样设置它的大小:)
    猜你喜欢
    • 2015-07-20
    • 2016-11-11
    • 2014-04-12
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2015-11-06
    • 2012-04-09
    • 2011-06-01
    相关资源
    最近更新 更多