Хорошо, у меня есть этот код:
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
flagTile.anchorPoint = CGPointZero;
flagTile.size = touchedNode.size;
flagTile.name = @"flag";
[touchedNode addChild:flagTile];
Когда пользователь нажимает на поле (SKSpriteNode), он добавляет к своим дочерним элементам еще один спрайт — узел флага. Размер текстуры touchedNode 80x80, текстура флага 80x80... они абсолютно одинаковы, главное отличие в том, что текстура флага имеет прозрачные границы.
Здесь:
Но происходит странная вещь: флаговый узел всегда имеет свою реальную (давайте назовем его «прикасаемой») область меньше, чем touchedNode, и его положение довольно странное.
Вот так:
Структура всех моих слоёв такова: CompoundNode содержит два слоя - A и B. Когда требуется изменение размера всего дерева, устанавливается xScale и yScale (compoundNode). Никаких других манипуляций с размерами.
Что я делаю неправильно?
Что мне действительно нужно, так это чтобы моя область касания flagTile была размером с touchedNode. И еще: если я заменю:
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
с этим:
SKSpriteNode *flagTile = [SKSpriteNode spriteWithColor:[UIColor clearColor] size:touchedNode.size];
это прекрасно работает.
Я пробовал даже изменить свойство текстуры после создания спрайта clearColor - ничего не работает.
Спасибо.