我正在使用 spriteKit (objective-C) 构建一个应用程序,并且我正在使用 intersectsNode 来判断玩家绘制的线是否与游戏板上的字母图块发生碰撞。我的程序中有另一个 intersectsNode 实例,它运行良好,但由于某种原因,这个新场景总是返回 false。我检查了参数,spriteKit 唯一说的是确保它们都是同一棵树的子节点,它们肯定是(自己)。一个是 SKSpriteNode,另一个是 SKShapeNode。
if (directionIsDecided == TRUE) {
for (letterTile in letterTileArray) {
if ([letterTile intersectsNode:selectorLine]) {
[lettersToBeCalculatedForPoints addObject:letterTile];
}
}
}
希望我没有忽略一些愚蠢的事情......有什么想法可能导致这个函数永远不会返回true?
*编辑
好吧,我认为这与我如何画线有关。我改变了它,所以它检测到与板上产生的元音的碰撞,每个元音都是 letterTile 的一个 child ,现在它告诉我所有的元音都与 selecorLine 发生碰撞,即使它没有触及任何一个他们。
这就是我创建 selectorLine 的方式:
执行:
CGMutablePathRef pathToDraw;
SKShapeNode *selectorLine;
接触开始:
UITouch* touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
pathToDraw = CGPathCreateMutable();
CGPathMoveToPoint(pathToDraw, NULL, positionInScene.x, positionInScene.y);
selectorLine = [SKShapeNode node];
selectorLine.path = pathToDraw;
selectorLine.strokeColor = [SKColor greenColor];
selectorLine.lineWidth = 10;
[self addChild:selectorLine];
selectorLine.zPosition = 101;
触摸移动:
UITouch* touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
CGPathAddLineToPoint(pathToDraw, NULL, positionInScene.x, positionInScene.y);
selectorLine.path = pathToDraw;
任何和所有的想法表示赞赏,谢谢!
最佳答案
我一直在我的代码中通过使用 CGRectIntersectsRect
作为 SKShapeNode
边界矩形交叉点来解决这个问题。
使用 CGRectIntersectsRect
您的代码如下所示:
if (directionIsDecided == TRUE) {
for (letterTile in letterTileArray) {
if (CGRectIntersectsRect(letterTile.frame, selectorLine.frame)) {
[lettersToBeCalculatedForPoints addObject:letterTile];
}
}
}
关于ios - intersectsNode 未检测到相交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20672905/