2016-10-09 119 views
3

這是我的代碼,我沒有使用我的圖像InterfaceBakground.jepg的資產目錄。相反,我只是將這個2048x1535圖片拖到項目中。但形象並沒有出現正確的方式。我想讓圖像顯示爲背景圖像,填滿整個屏幕。Swift - 將一個背景圖像添加到Spritekit場景

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

試試這個代碼:

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

非常感謝你,你解決了我的問題。 –

+1

等待,如果這個工作,這意味着你的場景的定位點是0.5,0.5。這意味着除了大小之外,您不必設置任何背景(除了self.size.width和self.size.height,所有變量都是默認變量,這會將精靈縮放爲場景大小) – Knight0fDragon

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) 
    } 
+0

不,它不會工作。圖像不在這個地方。 –

+0

沒有定位點,如果他的場景定位點爲0,0,那麼這將工作 – Knight0fDragon

+0

你是完全正確的,我不確定它,只知道你可以設置它的大小:) – Eric