设置SKSpriteNode的可触摸区域

时间:2014-10-30 15:20:42

标签: ios swift sprite-kit

是否有SKSpriteNode属性允许您手动设置其可触摸区域?

我有一个用PNG纹理的精灵,它似乎只能检测到PNG不透明部分的触摸。因此,大型空白画布内的一个小圆圈实际上有一个很小的可触摸区域。

2 个答案:

答案 0 :(得分:1)

创建一个您想要可触摸区域的大小的SKNode。添加纹理精灵作为新SKNode的子项。检查是否触摸了新的SKNode,而不是触摸了纹理精灵。

答案 1 :(得分:0)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];
    if ([node.name isEqualToString:@"childName"]) 
    {
        NSLog(@"You touched to child of sprite");
    }
}
-(void)sprite
{
    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"spriteImageName"];
    [self addChild:sprite];

    SKSpriteNode *spriteChild = [SKSpriteNode spriteNodeWithImageNamed:@"childImageName"];
    spriteChild.name = @"childName"; 
    [sprite addChild:spriteChild];
}