Cat ノードと Bird ノードがあります。鳥のノードは、birdBlock と呼ばれるコンテナ ノードに入れ子になっています。すべてが WorldNode に含まれています。WorldNode に鳥を追加すると、Cat は鳥と適切に対話できますが、鳥が birdBlock にいる場合、Cat は鳥を邪魔にならないように押しのけて飛んでいきます。
私は自分の鳥を見つけるために以下を使用しています:
[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];
}
}
}
}];
したがって、これも機能しません。スプライトの座標系を変更するにはどうすればよいですか?