• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - SpriteKit - 检测节点是否命中另一个节点子节点并执行操作

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:44:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 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.
    }
}];

方 block 中的鸟有正确的名字。

它们现在正在被枚举,但除了在屏幕上飞来飞去之外,它们仍然不与猫互动。

现在我正在这样做:

[[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];
                }
            }
        }
}];

所以这也不起作用。如何更改 Sprite 的坐标系?



Best Answer-推荐答案


您可以通过多种方式搜索节点树。 SKNode documentation搜索节点树部分清楚地解释了它。

如果您有一个名为 @"node" 的节点,那么您可以通过在名称前放置一个 // 来搜索所有后代。所以你会搜索 @"//node"

尝试将您的常量 kBirdName 更改为等于 @"//my_bird_name"

使用字符串文字的示例是 -

[worldNode enumerateChildNodesWithName"//nodeName" usingBlock:^(SKNode *node, BOOL *stop)
{ // Do stuff here... }

关于ios - SpriteKit - 检测节点是否命中另一个节点子节点并执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297820/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap