SpriteKit - преобразование точки в координаты сцены дает неправильное значение
Я хочу преобразовать положение ячейки в координаты сцены. В настоящее время ячейка является дочерним элементом невидимого узла. Когда клетка вступает в контакт с вирусом, я получаю положение клетки. Смущает, что положение ячейки одинаково в ее координатах относительно ее родителя, а также когда координаты преобразуются в сцену. Позиция читает (0,0.002), но ее фактическая позиция должна быть (0,50).
Если я контролирую положение, ссылаясь на узел ячейки напрямую (например, childNodeWithName("cell")
), это показывает правильную позицию. Первоначально я предполагал, что проблема связана с броском вниз, но с или без него позиция показывает неправильно. Почему это так?
func didBeginContact(contact: SKPhysicsContact) {
let bodyA = contact.bodyA
let bodyB = contact.bodyB
if bodyA.categoryBitMask & PhysicsCategory.Virus != 0
&& bodyB.categoryBitMask & PhysicsCategory.Cell != 0 {
let virus = bodyA.node as! VirusNode
virus.attachedCell = bodyB.node as? CellNode
print(self.convertPoint(virus.attachedCell!.position, toNode: self)) //outputs (0,0.002)
}
}
1 ответ
Вы используете метод convertPoint для того же объекта (себя), который вы конвертируете в (себя), так что вы всегда получите ту же точку!
Есть много проблем с этим фрагментом. Например, простая установка свойства вирус в attachCell не сделает вирус дочерним узлом вируса.
Если вы хотите сделать это, вы должны сделать это явно. В противном случае, ячейка все еще является дочерней по отношению к любому узлу, которым она была раньше...
Вы хотите это:
func didBeginContact(contact: SKPhysicsContact) {
let bodyA = contact.bodyA
let bodyB = contact.bodyB
if bodyA.categoryBitMask & PhysicsCategory.Virus != 0
&& bodyB.categoryBitMask & PhysicsCategory.Cell != 0 {
bodyB.node.removeFromParent()
let virus = bodyA.node as! VirusNode
virus.attachedCell = bodyB.node as? CellNode
virus.addChild(bodyB.node)
print(virus.convertPoint(virus.attachedCell!.position, toNode: self)) //should output properly
}
}
Который преобразует положение ячейки из системы координат вируса в систему координат сцены.