2016-06-28 1 views
0

に変数を設定した後、目に見えないです。SKSpriteNodesは、私はかわす小惑星や破片の他の種類にあなたが持っているゲームを書いている別のタイプ

var s = Spawner() 
didMoveToView(...) { 
self.addChild(s) 
} 
*** 
*** 
TapMethod() { 
s = NewSpawnerType() //NewSpawnerType is a subclass of Spawner 
} 

スポーナプログラムは、新しい小惑星を作成する機能を持っていSKNodeです:だからテスト用として、私は、画面をタップするたびに、それはそう、それは産卵小惑星の種類を変更するコマンドを実行してきましたそれらを画面上にランダムに配置します。

テスト目的のために今すぐ

、産卵機能は

func Spawn(RandomCordsX: CGFloat, RandomCordsY: CGFloat) { 
} 

空で、NewSpawnerTypeの機能は、小惑星に生成します:しかし

func Spawn(RandomCordsX: CGFloat, RandomCordsY: CGFloat) { 
    asteroid = Debris(xPosition: xCoord, yPosition: yCorrd, scale: 1, fileNamed: "asteroid",id: Int(xCoord)) 
    asteroid.texture?.filteringMode = .Nearest 
    asteroid.zPosition = 1 
    asteroid.hidden = false 
    self.addChild(asteroid) 
} 

、画面をタップするたびに、ある産卵すべての小惑星目に見えない;彼らはまだプレイヤーと衝突し、ゲームを終えるが、小惑星は見えない。私はそれが見えない小惑星を産卵せずにNewSpawnerType()への変数を設定するにはどうすればよい

を(node.hidden = trueが実行されませんでしたか)?

+0

ですから、ノードが(ないオフスクリーン)があることをポジティブが、見えないAppleの公式ドキュメントにhereを見て確認するには?ビジュアルフィジックス表現を有効にしていますか?とにかく、ブレークポイントを入れて隠れたプロパティが本当に偽であるかどうかを見て、それらのノードのアルファプロパティをチェックしてください。 – Whirlwind

+0

私は視覚物理学を使用していません。ノードのアルファと小惑星は両方1.0であり、ノードと小惑星の隠れた性質は両方とも偽です。もう一つは、ゲームが始まる前にsがNewSpawnerTypeに設定されている場合、小惑星が表示されます。 – user3894191

答えて

0

多くの作業をすることができたノードの子の順序を維持します。 代わりに、各ノードにシーンの明示的な高さを設定できます。 これを行うには、ノードのzPositionプロパティを設定します。 z位置がその親ノードに ノードの高さと比較され、ノードの位置 プロパティだけが親の 位置へのXおよびY位置を表します。したがって、z位置を使用して、 親の位置の上または下にノードを配置します。

アカウントにzの位置を取るときは、ここでノードツリーがレンダリング ある方法です:

各ノードのグローバルz位置を計算します。ノードは、最小のz値から最大のz値まで順に で描画されます。 2つのノードが同じ のz値を共有する場合、祖先が最初にレンダリングされ、兄弟は 子順でレンダリングされます。

あなたが同じZPOSITIONとしなければならないとき、あなたの要素の順序は、あなたが親ノードにあなたの要素をaddChild時間に基づいています。アニメーションを操作するときに問題が生じる可能性がありますので、要素の挿入順序を確認して再試行してください。

その他の詳細は、(概念/ SpriteKit_PG /ノード/ノード)

+0

私はzPositionを99999に変更しようとしました。確かに動作しませんでした。私はそれがNewSpawnerTypeに変更することと関係があると思う。プログラムを実行するとNewSpawnerTypeがすべての小惑星に表示されます – user3894191

+0

フィルタリングモードをasteroid.filteringMode = .Linearに変更しようとしましたか?私はこのオプションがいくつかの問題を引き起こすかもしれないことを知っ –

関連する問題