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

Смежные вопросы