gpt4 book ai didi

ios - intersectsNode 未检测交叉点

转载 作者:可可西里 更新时间:2023-11-01 06:23:15 31 4
gpt4 key购买 nike

我正在使用 spriteKit (objective-C) 构建一个应用程序,我正在使用 intersectsNode 来判断玩家绘制的线条是否与游戏板上的字母拼贴碰撞。我的程序中有另一个运行良好的 intersectsNode 实例,但由于某种原因,这个新场景总是返回 false。我已经检查了参数,spriteKit 唯一说的是确保它们都是同一棵树的 child ,它们肯定是(自己)。一个是 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;

感谢任何和所有的想法,谢谢!

最佳答案

我一直在通过使用 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com