Я разрабатываю игру с помощью SpriteKit. У меня есть куб, который является родительским для всех остальных узлов. Если пользователь нажимает на экран, Узел 1 начинает падать с середины экрана. После того, как Узел 1 приземляется на куб, куб немного опускается. Когда пользователь нажимает еще раз, узел 2 начинает падать, но узел 2 занимает более низкое положение, чем узел 1, потому что родительский узел переместился вниз.
Есть ли способ установить положение каждого узла в определенную точку на экране независимо от того, где находится родитель?
Родительский узел:
Cube.setScale(0.85)
Cube.zPosition = 3
Cube.position.x = self.size.width / 2
Cube.physicsBody = SKPhysicsBody(texture: CubeTexture,size: CGSize(width: CubeTexture.size().width * 0.9, height: CubeTexture.size().height * 0.82))
Cube.physicsBody?.isDynamic = false
Cube.physicsBody?.affectedByGravity = false
self.addChild(Cube)
Дочерние узлы:
node1.setScale(0.95)
node1.position = CGPoint(x: -350, y: 310) //<-- I want this position to be a constant value on the screen
node1.zPosition = 1
node1.physicsBody = SKPhysicsBody(texture: node1Texture,size: CGSize(width: node1Texture.size().width * 1.1, height: node1Texture.size().height * 0.85))
node1.physicsBody?.isDynamic = true
node1.physicsBody?.affectedByGravity = false
node1.physicsBody?.usesPreciseCollisionDetection = true
node1.physicsBody?.restitution = 0
Cube.addChild(node1):
lazy var node2 = node1.copy() as! SKSpriteNode
lazy var node3 = node1.copy() as! SKSpriteNode
lazy var node4 = node1.copy() as! SKSpriteNode
lazy var node5 = node1.copy() as! SKSpriteNode
lazy var node6 = node1.copy() as! SKSpriteNode
lazy var node7 = node1.copy() as! SKSpriteNode
lazy var node8 = node1.copy() as! SKSpriteNode
lazy var node9 = node1.copy() as! SKSpriteNode
lazy var node10 = node1.copy() as! SKSpriteNode
Движение куба каждый раз, когда узел падает:
func addMovement3(Cube:SKSpriteNode) {
var actionArray = [SKAction]()
actionArray.append(SKAction.moveTo(y: Cube.position.y - 61.8, duration: 0.1))
Cube.run(SKAction.sequence(actionArray))
}