SKSpriteNode personalizado não detectado durante o toque
No aprendizado do SpriteKit, estou tentando fazer um pequeno jogo de aventura. Eu estou criando um herói e adicionando-o à cena e, mais tarde, durantetouchesBegan:
, Eu detecto se o toque se originou no herói e tomo as ações de acordo.
Se eu adicionar o herói como umSKSpriteNode
o toque o detecta. Se eu adicioná-lo como uma subclasse deSKSpriteNode
o toque não! A diferença em adicionar:
_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
vs
_heroNode = [[ADVHeroNode alloc] init];
O init parece com isso:
- (id) init {
if (self = [super init]) {
self.name = @"heroNode";
SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
[self addChild:image];
}
return self;
}
Adicionando o herói como uma subclasse de SKSpriteNode funciona no sentido em que é adicionado à cena, mas o toque não o detecta. MinhastouchesBegan:
se parece com isso:
-(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;
}
}
Frustrantemente, este código funciona bem quando adicionamos umSKSpriteNode
e não minha própria subclasse. Alguma sugestão?