быстро создавать несколько спрайтов (узлов) с одинаковой текстурой

Итак, я пытаюсь сделать игру, и мне нужно сгенерировать ряд узлов, которые ускоряются вверх. Но каждый раз, когда я добавляю узел, я получаю сообщение об ошибке (потому что у узла уже есть родитель), очевидно, я добавил Sprite.removeFromParent()

введите здесь описание изображения

на изображении вы можете увидеть, что я пытаюсь реализовать. В любом случае блоки также должны регистрировать, сколько раз к ним прикасались.


person Andres Vlaeminck    schedule 19.09.2015    source источник


Ответы (1)


Чтобы ответить на вопрос, вынесенный в заголовок:

Довольно просто, создайте SKTexture и для каждого SKSpriteNode установите текстуру на этот SKTexture. Код для этого будет выглядеть примерно так:

// Create the texture
var boxTexture = SKTexture(imageNamed: "boxImage")
for (var i = 0; i < 10; i++) {
    // Create box with defined texture
    var box = SKSpriteNode(texture: boxTexture);
    // Set position of box dynamically
    box.position = CGPointMake(CGFloat(i * 20), CGFloat(512));
    // Name for easier use (may need to change if you have multiple rows generated)
    box.name = "box"+String(i);
    // Add box to scene
    addChild(box);
}

Проблема, с которой вы столкнулись в своем описании, заключается в том, что вы создаете только один SKSpriteNode, когда вам нужно несколько, чтобы пройти снизу. Просто используйте цикл for для создания нескольких и добавьте их все в сцену (по сути, тот же код, что и выше). Вы можете захотеть дать им все name свойств, чтобы выяснить, какой блок какой позже (если вы не сохраните их как глобальные переменные). Обязательно измените название, если у вас есть несколько рядов ящиков, перемещающихся одновременно.

person Gliderman    schedule 19.09.2015