Nell'apprendimento di SpriteKit, sto cercando di realizzare un piccolo gioco di avventura. Sto creando un eroe e aggiungendolo alla scena, e successivamente, durante il touchesBegan:
, rilevo se il tocco è originato sull'eroe e agisco di conseguenza.Custom SKSpriteNode non rilevato durante il tocco
Se aggiungo l'eroe come SKSpriteNode
il tocco lo rileva. Se lo aggiungo come sottoclasse di SKSpriteNode
il tocco non lo fa! La differenza di aggiungere:
_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
vs
_heroNode = [[ADVHeroNode alloc] init];
L'init si presenta così:
- (id) init {
if (self = [super init]) {
self.name = @"heroNode";
SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
[self addChild:image];
}
return self;
}
Aggiunta l'eroe come una sottoclasse di SKSpriteNode funziona, nel senso che viene aggiunto alla la scena, ma il tocco non lo rileva. Il mio touchesBegan:
assomiglia a questo:
-(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;
}
}
Frustrante, questo codice funziona bene quando si aggiunge una sottoclasse verso l'alto SKSpriteNode
, e non la mia di esso. Eventuali suggerimenti?
Sebbene non conosca SpriteKit e Objective-C in generale, non vedo come creiamo un'istanza di queste classi? – Jide
Non ho inserito quel codice, creo semplicemente come si crea un normale SKSprite, ma usa HeroSprite. – DogCoffee
Fantastico modo di farlo! Impressionante – Septronic