【问题标题】:Spritekit changing parent makes the node disappearSpritekit更改父节点使节点消失
【发布时间】:2016-02-19 10:43:01
【问题描述】:

我有一个中心有一个节点(大正方形)的 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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我也检查了这个,我尝试在项目中放置比任何其他节点更高的 zPosition,我仍然看不到它。
    • 好吧,奇怪。你的目标节点的大小?你能给我们一个小的示例代码吗?
    • 嗯。我看不到您在哪里使用该对象。它仅在您的示例中实例化。也缺少复制功能。
    • 我添加了更多信息。复制功能不是我做的(SKSpriteNode复制功能)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多