2014-10-30 69 views
1

是否有SKSpriteNode的屬性可讓您手動設置其可觸摸區域?設置SKSpriteNode的可觸摸區域

我有一個PNG紋理的精靈,它似乎只能檢測到PNG的不透明部分的觸摸。所以大空白畫布內的一個小圓圈實際上有一個很小的可觸摸區域。

回答

1

創建一個您希望可觸摸區域大小的SKNode。添加紋理精靈作爲新SKNode的子節點。檢查是否觸摸了新的SKNode,而不是觸摸紋理的精靈。

+0

我在設置SKNode的幀大小時遇到​​問題 - 當我修改該屬性時,它內部的精靈將消失。但這似乎是正確的路要走。 – 2014-10-30 19:36:46

+0

在添加紋理spriteNode之前設置SKNode及其其他屬性的大小 – meisenman 2014-10-30 19:51:06

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]; 
}