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