2017-04-23 7 views
2

私はSwift 3を探し始めました。以前はコード化されていなかったので、全く新しいことです。の下部に1/4 exampleSpriteNodeスウィフト3でのノードの配置問題

class GameScene: SKScene { 

    override func didMove(to view: SKView) { 

     // SKLabelNode 
     var exampleLabelNode = SKLabelNode(fontNamed: "Helvetica") 
     exampleLabelNode.text = "Example Label Node!" 
     exampleLabelNode.fontSize = 30 
     exampleLabelNode.fontColor = SKColor.white 
     exampleLabelNode.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 0.75) 
     self.addChild(exampleLabelNode) 

     // SKSpriteNode 
     var exampleSpriteNode = SKSpriteNode(imageNamed: "myImage") 
     exampleSpriteNode.size = CGSize(width: 180, height: 180) 
     exampleSpriteNode.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
     exampleSpriteNode.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 0.25) 
     exampleSpriteNode.zPosition = 100 
     exampleSpriteNode.name = "exampleName" 
     self.addChild(exampleSpriteNode) 

    } 

} 
画面の上部に exampleLabelNodeセンターおよび3/4を配置するためのものだ

:本当に基本的なノードのチュートリアルを見て、次のコードを持っているされてスクリーン。 exampleLabelNode右側にオフスクリーンと半分の上部にその位置決めexampleSpriteNode 3/4画面をオフに配置しかし

チュートリアルはSwift 2用ですので、Swift 3では位置指定構文などが異なりますか?

答えて

2

これは、デフォルトのシーンanchorPointがシーンの中央を意味する(0.5、0.5)ために起こります。これは任意のノードのデフォルトのanchorPointです。これにより、シーンの中心にポイント(x:0、y:0)が作成されます。

問題が発生している場合は、これについて詳しくお読みいただくか、質問をして理解を深めることをおすすめします。

Appleの公式ドキュメント

SKSpriteNode anchorPoint

SKScene anchorPoint

注:これはデフォルト値であることを言うとき SKSceneためのドキュメントが正しくない(0、0)。

あなたの問題を解決するために、あなたはあなたのdidMove(to view)の先頭に次の行を追加することができます。

self.anchorPoint = CGPoint(x: 0, y: 0) 

これは(それがあったかにするために使用シーンの左下にシーンanchorPointを設定し、チュートリアルは時代遅れです)。

anchorPointが動作するようになったので、スプライト配置をやり直すこともできます。私はこれを提案します。なぜなら、左下のコーナーではなく中心からシーンを構築するときに、ゲームを簡単に構築できると思うからです。

+0

I行を考えた: 'exampleSpriteNode.anchorPoint =するCGPoint(X:0.5、Y:0.5)' はそれを配置する際exampleSpriteNodeの中心点を設定することでした。 私は、スクリーンの中心を左下ではなくデフォルトのx:0、y:0として使用して位置を決めていると考えていますか? – Bootfit

+0

@Bootfitです。 'anchorPoint'はすべてのノード(シーンを含む)が持つプロパティです。ノードのどの部分が中心であるかを決定します。あなたが書いた例は、 'exampleSpriteNode.anchorPoint = ...'で始まるのでノードのanchorPointに変更されます。私の例は 'self.anchorPoint = ...'で始まるのでシーン(自己)を変更します。 – Nik

+0

@Bootfitあなたが何を求めているのか分かりませんが、行を追加して何かをしましたか? – Nik

関連する問題