2016-12-02 10 views
3

SKLabelNodeの位置をSKSpriteNodeの中心に設定しようとしています。 私はこの上の他の質問を見てきましたが、スウィフト3.SKLabelNodeをSKSpriteNodeの中心に設定するSwift

でこれらの作品のどれもが、これは私のコードではありません:

var letter1background = SKSpriteNode(imageNamed: "letterbackground") 
    var letter1text = SKLabelNode() 

    override func didMove(to view: SKView) { 


     letter1background.position = CGPoint(x: self.size.width/8, y: self.size.height/7.5) 
     letter1background.size = CGSize(width: self.size.width/8, height: self.size.width/8) 
     letter1background.zPosition = -5 

     self.addChild(letter1background) 

     letter1text.text = "C" 
     letter1text.fontName = "Verdana-Bold " 
     letter1text.fontSize = 28 
     letter1text.fontColor = UIColor.white 
     letter1text.zPosition = 0 
     letter1text.horizontalAlignmentMode = letter1background.center 
     letter1text.verticalAlignmentMode = letter1background.center 

     self.letter1background.addChild(letter1text) 


    } 

それがうまくいくようにこのコードは見えるが、スウィフト3に、私は今、これを取得エラー:

Value of type 'SKSpriteNode' has no member 'center'

私も試してみました:

self.letter1text.position = CGPoint(x: letter1background.frame.width/2 - (letter1text.frame.width/2), y: letter1background.frame.height/2 -(letter1text.frame.height/2)) 

&

letter1text.position = CGPoint(x:letter1background.frame.midX, y:letter1background.frame.midY) 

しかし、私はまだこのような結果を得る:iphone screen

任意のアイデア?

+0

の可能性のある重複した[センターSKSpriteNode上SKLabelNode](http://stackoverflow.com/questions/25818989/centre-a-sklabelnode -on-a-skspritodeode) – shallowThought

+0

@NiallKehoe SKSpriteNodeは私が知っているように 'center'という名前のプロパティを持っていませんでした。これは、ノードではなくビューに固有のプロパティです。 – Whirlwind

答えて

3

ラベルの位置の計算が間違っています。 0,0の位置にラベルを追加するだけで、SpriteKit's coordinate systemの規則(0,0がノードの中央にあるため)が中央に配置されます。

override func didMove(to view: SKView) { 

     let label = SKLabelNode(fontNamed: "Arial") 

     label.text = "C" 
     label.fontColor = .black 
     label.verticalAlignmentMode = .center 
     label.fontSize = 29.0 
     label.zPosition = 1 


     let background = SKSpriteNode(color: .green, size: CGSize(width: 50, height: 50)) 

     background.addChild(label) 

     addChild(background) 

    } 

そして、あなたは、この取得します:

enter image description here

+0

ありがとうございました。私のアプリケーションに合わせてコードを少し変更しました。再度、感謝します –

関連する問題