2016-04-23 7 views
0

Ich entwickle ein kleines Spiel mit Swift & SpriteKit. Wenn ich eine SKSpriteNode Schaltfläche für Neustart hinzufüge, wird es nicht richtig skaliert.SKSpriteNode scaling nicht richtig

Die Größe der Schaltfläche Neustart ist 100px in Höhe und Breite. Wenn ich den Maßstab nicht einstelle, wird der gesamte Bildschirm abgedeckt und der Bildschirm erscheint weiß. Ich habe herausgefunden, dass wenn ich nur setScale bis 0.005 als es auf dem Bildschirm erscheint, aber nicht in der richtigen Größe. Hier

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

} 

ist der Ausgang dieses Codes, Restart Button Output

UPDATE

Ich habe scene!.scaleMode = .AspectFill direkt in didMoveToView Funktion und es half, die Form des SpriteNode richtig in Rendering. Aber immer noch muss ich setScale(0.001), um die Größe des Restart-Knopfes in den Bildschirm passen. Kann mir jemand helfen, welche Codezeile ich noch vermisse?

Antwort

0

Anstelle der Verwendung von .setScale versuchen Sie es mit restartBtn.size = CGSize (Breite: 50, Höhe: 50)

Dies nutzt die Resize-Formel Sprite Kit.

+0

Ich habe das auch bereits versucht, aber es gibt kein anderes Ergebnis. Um CGSize zu verwenden, muss ich Breite und Höhe '0.1' eingeben, um es auf dem Bildschirm sichtbar zu machen, und es wird immer noch in ovaler Form dargestellt, anstatt rund zu sein. – Haadi

0

Ich lief auch in diese. Es passierte, als ich vergessen hatte, die Größe der Szene anzugeben. Anstatt initWithSize zu rufen, schrieb ich einfach init und die Szene begann alle Knoten um x1000 zu verkleinern. Knoten waren sichtbar, aber sie erforderten eine Skala von 0,001