В процессе обучения SpriteKit я пытаюсь создать небольшую приключенческую игру. Я создаю героя и добавляю его на сцену, а затем, во время touchesBegan:
, я обнаруживаю, что прикосновение возникло у героя и соответственно предпримет действия.
Если я добавлю героя в качестве SKSpriteNode
, сенсорный сигнал обнаружит его. Если я добавлю его в качестве подкласса SKSpriteNode
, это не коснется! Разница в добавлении:
_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
против
_heroNode = [[ADVHeroNode alloc] init];
Инициализация выглядит так:
- (id) init {
if (self = [super init]) {
self.name = @"heroNode";
SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
[self addChild:image];
}
return self;
}
Добавление героя в качестве подкласса SKSpriteNode работает в том смысле, что оно добавлено к сцене, но прикосновение его не обнаруживает. Мой touchesBegan:
выглядит следующим образом:
-(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;
}
}
Удивительно, что этот код отлично работает при добавлении прямой вверх SKSpriteNode
, а не в моем собственном подклассе. Любые предложения?