У меня есть узел Cat и узел Bird. Узлы птиц вложены вместе в контейнерный узел, называемый birdBlock. Все содержится в WorldNode. Если я добавлю птицу к WorldNode, кошка может взаимодействовать с ней соответствующим образом, но когда птицы будут в birdBlock, Кошка просто сбрасывает их с пути, и они улетают.SpriteKit - обнаружить, если узел попадает в другие дочерние узлы и выполняет действие
Я использую следующий, чтобы найти мои птица:
[worldNode enumerateChildNodesWithName:kBirdName usingBlock:^(SKNode *node, BOOL *stop)
{
SKSpriteNode *newBird = (SKSpriteNode *)node;
if (CGRectIntersectsRect(newBird.frame,cat.frame))
{
//Do Something
//This is never reached when the birds are in the SKSpriteNode birdBlock.
//They just get shoved all over the screen.
}
}];
птицы в блоке имеет правильное имя.
Теперь они перечисляются, но все же не взаимодействуют с кошкой, кроме полета по экрану.
Теперь я делаю это:
[[worldNode children] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
{
SKSpriteNode *blockNode = (SKSpriteNode *)obj;
if ([blockNode.name isEqualToString:kBirdBlockName])
{
[blockNode enumerateChildNodesWithName:kBirdName usingBlock:^(SKNode *node, BOOL *stop)
{
SKSpriteNode *nbird = (SKSpriteNode *)node;
NSLog(@"FOUND BIRDS HERE");
//THIS IS FOUND! But below still does not work
if (CGRectIntersectsRect(nbird.frame, cat.frame))
{
NSLog(@"Hit BIRD");
[nbird removeFromParent];
}
}
}
}];
Так что это не работает. Как изменить систему координат спрайта?
Литерал, похоже, не работает и, похоже, разбивает птиц, которые также не находятся в блоке. Теперь кошка отправляет их всем, вместо того, чтобы выполнять взаимодействие, которое я хочу. – Siriss
Возникают ли птицы в гнезде в блоке? Также там, где вы обнаруживаете пересечение фреймов, убедитесь, что прямоугольники находятся в одном и том же координатном пространстве узлов. cat.frame находится в координатах сцены, которые я принимаю, но newBird.frame находится в родительском координате пространства, которое не является сценой (если оно находится в гнезде). При столкновении вам также может потребоваться удалить птицу из родителя, преобразовать позицию и добавить к сцене, в зависимости от того, какое поведение вы хотите. – Bamsworld
Что ты имеешь в виду? Они видны и летают, когда Кошка бьет их. Как сделать их в одном и том же координатном пространстве? – Siriss