Swift - 将背景图像添加到Spritekit场景

时间:2016-10-09 07:00:30

标签: ios swift sprite-kit

这是我的代码,我没有为我的图像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(左下角)的精灵。如果你想   要使用专门为您的屏幕调整大小的图像,您必须这样做   改变立场。

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

2 个答案:

答案 0 :(得分:2)

试试这段代码:

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),将图像置于其中心位置。

答案 1 :(得分:1)

我不完全确定,但我认为您可以像这样设置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)
    }