създайте множество спрайтове (възли) с една и съща текстура бързо

Така че се опитвам да направя игра и трябва да генерирам редица възли, които се ускоряват нагоре. Но всеки път, когато добавя възела, получавам грешка (тъй като възелът вече има родител), очевидно добавих 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