ios - Superposición de SpriteNodes al girar como una unidad
swift swift3 (1)
El problema es que estás girando los triángulos individuales, que se rotan de acuerdo con su propio sistema de coordenadas. Imagine que cada triángulo está inmovilizado en el centro y gira alrededor de él. Claramente, los triángulos se superpondrán. Deberías rotarlos alrededor de un punto único. En su caso, la forma más sencilla de hacerlo es agregarlos al mismo nodo primario y luego girar el elemento primario:
// This is the configuration to do in sceneDidLoad
let node = SKNode()
node.addChild(blueTriLeft)
node.addChild(redTriLeft)
node.addChild(yellowTriLeft)
node.addChild(greenTriLeft)
scene.addChild(node)
// Inside touchesBegan(_:, with:)
node.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
Me encontré con un problema al desarrollar mi aplicación con Swift 3 y Spritekit. He creado cuatro triángulos separados que forman un cuadrado para detectar la colisión. Cuando voy a rotar estos triángulos como una unidad, se superponen y no tienen la forma de un cuadrado (se superponen entre sí) durante la rotación, pero luego vuelven a la normalidad una vez que se completa la rotación.
Este es el código que utilicé para la rotación:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
if location.x < 0 {
blueTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
redTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
yellowTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
greenTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
} else if location.x > 0 {
blueTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
redTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
yellowTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
greenTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
}
}
}
A continuación se muestra una imagen de mi cuadrado formado por cuatro triángulos separados
Por favor, siéntase libre de preguntarme cualquier otro código que necesite ver, cualquier entrada ayuda. Además, no pude poner en práctica el problema de superposición en acción, lo lamento de antemano, pero haré todo lo posible para obtenerlo.