【发布时间】:2013-12-19 03:20:08
【问题描述】:
我正在使用 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 的孩子,现在它告诉我所有元音都与 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;
感谢任何和所有想法,谢谢!
【问题讨论】:
-
通过调试我发现程序肯定在内存中找到了letterTiles,并且肯定在内存中找到了selectorLine。我已经将 selectorLine.lineWidth 增加到 200,使它变得如此令人讨厌,它覆盖了每一个 letterTile,与 zPosition 一起玩(显然什么也没做)。我真的不知道还能做些什么来调试这个问题......这不是我想做的一件非常复杂的事情......我只是不明白:(
-
当我使用 NSLog(@"%f, %f", selectorLine.frame.size.height, selectorLine.frame.size.width); ,它只是打印出线所在的坐标... NSLog(@"%f, %f", selectorLine.xScale, selectorLine.yScale);只是打印出 1.0 1.0.... 我只是试图将 SKShapeNode 与另一个节点进行比较?
标签: ios objective-c ios7 sprite-kit