2016-05-04 13 views
0

「セル」の子として「ウイルス」を追加しようとしていますが、セルのみが表示されます。シーンに追加してウイルスを追加しようとしましたが、プログラムが壊れました。既存のSkSpriteNodeに子を追加する適切な方法は何ですか?SKSpriteNode.addChild()が動作しない理由

override func didMoveToView(view: SKView) { 
    /* Setup your scene here */ 
    let virus : VirusNode = VirusNode.create(CGPoint(x: self.frame.maxX/2, y: self.frame.maxY/2)) 
    let cell = SKShapeNode(circleOfRadius: CGFloat(10)) 
    cell.fillColor = UIColor.greenColor() 
    cell.position = CGPoint(x: self.frame.maxX/2, y: self.frame.maxY/2) 
    cell.addChild(virus) //virus is just a SKSpriteNode 
    self.addChild(cell) 

} 

答えて

1

あなたの問題は、親子関係を扱うときにフレームがどのように機能するかを理解する必要があります。

子供のフレームは常に親の座標系にあるので、あなたのウイルスを作成します。これを念頭に置いておく必要があります。

現在のところ、ウイルスはシーンの中心に設定されています。シーンの中央にセルを設定します。ウィルスをセルに追加すると、親の場所(画面の中央)+子の位置(画面の中央)にフレームが変更され、ウィルスはシーンの右上に表示されます。あなたが望むものではありません。

代わりに、ウイルスを位置(0,0)に設定します。セルに追加すると、セルの中央に配置されます。

プログラムの破損に関して、別のSKNode(またはSKScene)にSKNodeを追加する場合、そのSKNodeを別のSKNodeに与える前に、そのSKNodeを親から削除する必要があります。児童保護サービスのような仕事を考えてみると、新しい親に子供を与える前に元の家から子供を取り除く必要があります。そうしないと、制御できない両親の邪悪な対決に終わることがあります。

+0

非常に精巧な説明ですが、私はその洞察と解決策に感謝します。 – kag359six

関連する問題