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?