ios - 避免 Sprite Kit 节点相互堆叠

标签 ios iphone sprite-kit

我是一名新手开发者,我正在制作一款让两个彩球落下的游戏。你必须得到蓝色的,避免红色的。现在,球出现在屏幕顶部的随机点,但有时一些球会出现在其他球的顶部,我想知道是否有办法检测到并在代码中避免它,因为我不知道如何实现它。谢谢!如果您需要有关某事的更多信息,请随时向我询问。

最佳答案

最好只为球设置一个 SKNode,添加新球时只需通过该节点并检查球在哪里。

//balls node variable in scene, SKNode *ballsNode,
//add this to init or other method:
//self.ballsNode = [SKNode node];
//[self addChild:self.ballsNode];
//
-(void)addRock
{
  SKSpriteNode *rock = [[SKSpriteNode alloc] initWithColor:[SKColor brownColor] size:CGSizeMake(8, 8)];
  CGFloat newRandomX;
  CGPoint ballPosition;
  BOOL positionIsOk = NO;
  while(!positionIsOk)
  {
    newRandomX = getRandomX();
    ballPosition = CGPointMake(newRandomX, yourYPos);
    for(SKSpriteNode *node in self.ballsNode.children)
    {
      if(!CGRectContainsPoint ( node.frame, ballPosition ))
      {
        positionIsOk = YES;
        break;
      }
      else
      {
        newRandomX = getRandomX();
        ballPosition = CGPointMake(newRandomX, yourYPos);
      }
    }
  }
  rock.position = ballPosition;
  [self.ballsNode addChild:rock];
}

这样您将遍历所有球并确定位置,这样它就不会与所有这些球发生碰撞。

关于ios - 避免 Sprite Kit 节点相互堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733545/

相关文章:

iphone - ios - 代码 VS Storyboard 意见

ios - 如何在 iOS 中从 UIView 转移到 SKScene

ios - 如何从另一个 ViewController 调用函数

c++ - 从标准 C++ 代码访问 iPhone 的沙箱文档文件夹

iphone - XCode:新 iOS 6 ABAddressBook 函数出现 Apple Mach-O 链接器错误

swift - 将一个 SKSpritenode 移向另一个 SKSpriteNode(磁铁)

ios - 随机运动/湍流 - SWIFT

ios - 如何获取 uiimage.image 属性更改与实际图像从 Web 出现之间的时间间隔

ios - Firebase Swift 3 Xcode 8 - 遍历观察结果

ios - 使用handleWatchKitExtensionRequest 将数组传递给 watch 应用程序