2016-10-09 13 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

waitこれが機能する場合、これはシーンのアンカーポイントが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

関連する問題