Spritekit更改父节点使节点消失

时间:2015-11-17 21:37:47

标签: sprite-kit position coordinates coordinate-systems coordinate-transformation

我有一个SKScene,中心有一个节点(大方块)。我有其他节点,我想将那些节点的父节点更改为mySquare而不是场景。

我尝试使用myNode.moveToParent(mySquare)。它似乎工作,因为我可以在节点树中mySquare下找到我的节点(for node in mySquare.children打印我正确的节点)。我的问题是我再也看不到那些节点......

我想知道节点是否可能位置错误,所以我尝试用node.position = mySquare.convertPoint(node.position, fromNode: self)更改它的位置。我尝试将节点的位置放在moveToParent之前的临时变量中,然后转换此位置,它不起作用。然后我试着简单地将节点定位在mySquare的中心,node.position = CGPoint(x: 0.5, y: 0.5)是mySquare的锚点,但节点仍然消失。

我通过在带有火花的节点上放置一个SKEmitter来测试位置。火花恰好是节点在其父级是场景时的位置,这意味着在正确的位置。但节点不存在。

你对如何解决这个问题有任何想法吗?

非常感谢你的时间。

附加信息

这就是我创建节点的方式

let object = SKSpriteNode(imageNamed: "myObject")
self.addChild(copy() as! SKSpriteNote)

我设置的位置与触摸相匹配(我在触摸mySquare时创建)。

mySquare从一开始就已经在场景中了(我在场景编辑器中拖了一个SKShapeNode,这是一个正方形)。

这是我更改父

的地方
func sizeOfObject(sender: UIPinchGestureRecognizer){
    if (sender.state == .Began){
        for nodes in nodesOnMySquare {
            let pos = table.convertPoint(node.position, fromNode: self)
            node.removeFromParent()
            table.addChild(node)
            node.position = pos
        }
    }

在我的for循环中,我也测试了moveToParent,就像这样

node.moveToParent(table)  //Same result, the node disappear

1 个答案:

答案 0 :(得分:0)

检查节点的zPosition。也许它隐藏在另一个元素后面。