Niestandardowy kod SKSpriteNode nie został wykryty podczas dotyku

Podczas nauki SpriteKit staram się stworzyć małą grę przygodową. Tworzę bohatera i dodaję go do sceny, a później, w trakcietouchesBegan:, Wykrywam, czy dotyk pochodzi od bohatera i podejmuję odpowiednie działania.

Jeśli dodam bohatera jakoSKSpriteNode dotyk wykrywa go. Jeśli dodam go jako podklasęSKSpriteNode dotyk nie! Różnica w dodawaniu:

_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];

vs

_heroNode = [[ADVHeroNode alloc] init];

Inicjator wygląda tak:

- (id) init {
    if (self = [super init]) {

        self.name = @"heroNode";
        SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
        [self addChild:image];
    }
    return self;
}

Dodanie bohatera jako podklasy SKSpriteNode działa w tym sensie, że jest dodawane do sceny, ale dotyk go nie wykrywa. MójtouchesBegan: wygląda tak:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];
    if (YES) NSLog(@"Node name where touch began: %@", node.name);

    //if hero touched set BOOL
    if ([node.name isEqualToString:@"heroNode"]) {
        if (YES) NSLog(@"touch in hero");
        touchedHero = YES;
    }
}

Frustrująco ten kod działa dobrze, gdy dodajemy prostąSKSpriteNode, a nie moja własna podklasa. Jakieś sugestie?

questionAnswers(5)

yourAnswerToTheQuestion