У меня есть 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