2016-04-23 3 views
0

Я разрабатываю небольшую игру, используя Swift & SpriteKit. Когда я добавляю кнопку SKSpriteNode для перезагрузки, она не масштабируется должным образом.SKSpriteNode не правильно расчесывается

Размер кнопки перезапуска составляет 100 пикселей по высоте и ширине. Если я не устанавливаю масштаб, он охватывает весь экран и делает экран белым. Я понял, что если я setScale до 0,005, то только если он появляется на экране, но не в правильном размере.

import Foundation 
import SpriteKit 

class EndScene: SKScene { 

    var restartBtn = SKSpriteNode() 


    override func didMoveToView(view: SKView) { 

     background() 
     restartGame() 

    } 


    func restartGame() { 

     restartBtn = SKSpriteNode(imageNamed: "restartBtn") 
     restartBtn.setScale(0.005) 
     restartBtn.position = CGPoint(x: self.size.width/2, y: self.size.height/4) 
     restartBtn.zPosition = 1 

     self.addChild(restartBtn) 
    } 


    func background() { 

     let bkg = SKSpriteNode(imageNamed: "Background") 
     bkg.size = self.frame.size 
     bkg.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
     bkg.zPosition = -2 

     self.addChild(bkg) 
    } 

} 

Вот результат этого кода, Restart Button Output

UPDATE

Я положил scene!.scaleMode = .AspectFill прямо внутри didMoveToView функции, и это помогло в оказании форму SpriteNode правильно. Но все же у меня есть setScale(0.001), чтобы размер кнопки Restart соответствовал экрану. Может ли кто-нибудь помочь мне, какую строку кода мне еще не хватает?

ответ

0

Вместо использования .setScale попытаться использовать restartBtn.size = CGSize (ширина: 50, высота: 50)

При этом используется формула изменения размера спрайта Кита.

+0

Я тоже пробовал это, но это не дает никакого другого результата. Чтобы использовать CGSize, я должен установить ширину и высоту «0,1», чтобы сделать ее видимой на экране, и она по-прежнему отображается в овальной форме, а не в раунде. – Haadi

0

Я столкнулся с этим также. Это случилось, когда я забыл указать размер сцены. Вместо того, чтобы звонить initWithSize, я только что написал init, и сцена начала уменьшать все узлы на x1000. Узлы были видны, но они требовали шкалы от 0,001