【发布时间】: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