2016-12-26 11 views
2

私はSpriteKitが新しく、私はSpritekitNodeをポートレートモードの画面の中央近くの中央に配置するチュートリアルに従っていますが、使用するコードに関係なく、私のオブジェクトはチュートリアル。私はいくつかのチュートリアルを見てきましたが、SpriteKitNodeを配置するコードに関してはほとんど同じです。SpriteKitNodeの位置が正しく表示されないのはなぜですか?

これは私がGameScene.swiftに持っている唯一のコードです:私はGameScene.sksに何かを追加したり、上記のコードではまだInfo.plistファイルに変更を加えていない、mySpriteKitNodeが上に表示され

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 

    var player:SKSpriteNode! 

    override func didMove(to view: SKView) { 

     player = SKSpriteNode(imageNamed: "Spaceship") 
     player.xScale = 0.5 
     player.yScale = 0.5 

     player.position = CGPoint(x: self.frame.size.width/2, y: player.size.height/2 + 20) 

     self.addChild(player) 
    } 

    override func update(_ currentTime: TimeInterval) { 
     // Called before each frame is rendered 
    } 
} 

下の図のように画面の右中央に表示されます。宇宙船は、赤いX.私はSpriteKitベースでのポジショニングの問題に関するいくつかのポストを見てきましたが、このための解決策を見つけていない

Spaceship should be positioned near the red X

の近くに配置する必要があります。

誰かが私が間違っていることを正確に説明することができますか?ありがとう

答えて

4

あなたが従っているチュートリアルは、おそらく時代遅れであるために起こっています。以前は、シーンがsksファイルからロードされたとき、anchorPointは0,0に設定されていました。デフォルトでは0.5、0.5に設定されています。

だから、0.0、0.0にあなたの現在のコードが、設定されたシーンのアンカーポイントを使用するか、またはそのままシーンのanchorPointを残して、それに応じてプレイヤーのpositionプロパティを設定する:

//player.position.x should be 0 which is middle of the screen 
player.position.y = -frame.size.height/2.0 + player.size.height/2.0 + 20.0 
関連する問題