2016-10-09 7 views
3

Hier ist mein Code, ich habe keinen Asset-Katalog für mein Image InterfaceBakground.jepg verwendet. Stattdessen habe ich dieses 2048x1535-Bild einfach in das Projekt gezogen. Aber das Bild erschien nicht richtig. Ich möchte das Bild als Hintergrundbild anzeigen, füllen Sie den gesamten Bildschirm.Swift - Hinzufügen eines Hintergrundbilds zu einer Spritekit-Szene

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 
    } 
} 

Ich sah dies im Internet, die mir ein wenig Inspiration bringt:

Aber wenn Sie ein Bild verwenden, das genau die Größe des Bildschirms ist, es möglicherweise nicht angezeigt, wenn Sie erwarten von. Dies liegt daran, dass addChild standardmäßig neue Sprites an Position 0, 0 (linke untere Ecke) hinzufügt. Wenn Sie ein Bild speziell für Ihren Bildschirm verwenden möchten, müssen Sie seine Position ändern.

Meine Frage ist, wie man die Position ändert, damit es Geräte für unterschiedliche Größenanzeigen passt? Danke im Voraus.

Antwort

2

diesen Code Versuchen:

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

Anchor (0.5,0.5), die das Bild in seiner Position die Mitte.

+0

Vielen Dank Du hast mein Problem gelöst. –

+1

warte, Wenn das funktioniert, bedeutet dies, dass der Ankerpunkt deiner Szene 0,5, 0,5 ist. Das bedeutet, dass Sie nichts außer der Größe in den Hintergrund setzen müssen (alle Variablen hier sind Standardvariablen außer self.size.width und self.size.height, wodurch das Sprite auf die Szenengröße skaliert wird) – Knight0fDragon

1

Ich bin mir nicht ganz sicher, aber ich denke, dass Sie die Höhe und Breite des SpriteNode so einstellen können. Ich ändere auch die anchor nur um sicher zu sein:

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

Nein, es würde nicht funktionieren. Das Bild ist nicht da. –

+0

kein Ankerpunkt, wenn sein Szenen-Ankerpunkt bei 0,0 wäre, dann würde das funktionieren – Knight0fDragon

+0

Sie sind völlig richtig, ich war mir nicht sicher, wusste nur, dass Sie seine Größe so einstellen konnten :) – Eric

Verwandte Themen