Spritekit / UIBeziers:检测touches / nodeAtPoint

时间:2013-10-25 14:22:54

标签: ios sprite-kit

我正在创建这样的播放器:

UIBezierPath *pPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, 0)
                                                     radius:10
                                                 startAngle:0
                                                   endAngle:DEGREES_TO_RADIANS(360)
                                                  clockwise:YES];
_player = [[SKShapeNode alloc] init];
_player.path = pPath.CGPath;
[_player setFillColor:[UIColor blueColor]];
[_player setStrokeColor:[UIColor clearColor]];
_player.position = arenaCentre;
_player.zPosition = 1;
_player.name = @"player";

然后我使用以下方法检测此对象的触摸:

SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:touchLocation];

问题是我的形状太小/快有时无法接触。如何使触摸区域大于可见对象?

这种事情是否有最好的做法?

非常感谢, 伊恩

1 个答案:

答案 0 :(得分:1)

您可以绘制所需大小的较大形状(或颜色精灵)作为玩家形状的父级,并使用完全透明的颜色。

然而,这有时会找到父形状,有时会找到实际形状。所以你必须弥补这一点。