我正在使用spriteKit(objective-C)构建一个应用程序,我正在使用intersectsNode来判断玩家绘制的线条是否与游戏板上的字母图块发生碰撞.我的程序中有另一个intersectsNode实例正常工作,但由于某种原因,这个新方案总是返回false.我已经检查了参数,spriteKit说的唯一一件事就是确保它们都是同一棵树的孩子,他们肯定是(自己).一个是SKSpriteNode,另一个是SKShapeNode.
if (directionIsDecided == TRUE) { for (letterTile in letterTileArray) { if ([letterTile intersectsNode:selectorLine]) { [lettersToBeCalculatedForPoints addObject:letterTile]; } } }
希望我不会忽略一些愚蠢的东西......任何可能导致此功能永远不会返回真实的想法?
*编辑
好吧,我认为这与我如何画线有关.我改变了它,因此它检测到与板上产生的元音碰撞,每个元音都是letterTile的孩子,现在它告诉我所有元音都与selecorLine相撞,即使它没有接触任何元音线.他们.
这就是我创建我的selectorLine的方式:
执行:
CGMutablePathRef pathToDraw; SKShapeNode *selectorLine;
的touchesBegan:
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;
TouchesMoved:
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]; } } }