SpriteKit'i öğrenirken, küçük bir macera oyunu yapmaya çalışıyorum. Bir kahraman yaratıyorum ve sahneye ekledikten sonra, daha sonra, touchesBegan:
sırasında, dokunmanın kahramandan kaynaklanıp kaynaklanmadığını tespit edip, buna göre harekete geçiyorum.Özel SKSpriteNode dokunma sırasında algılanmadı
Kahramanı SKSpriteNode
olarak eklerseniz, dokunmatik onu algılar. Onu SKSpriteNode
'un bir alt sınıfı olarak eklerseniz dokunma yapmaz! ekleyerek farkı:
_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
vs
_heroNode = [[ADVHeroNode alloc] init];
init şuna benzer:
- (id) init {
if (self = [super init]) {
self.name = @"heroNode";
SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
[self addChild:image];
}
return self;
}
SKSpriteNode bir alt sınıf o eklenir anlamında çalıştığı için kahraman ekleme sahne, ama dokunma onu algılamaz. Benim touchesBegan:
şöyle görünür: bunun bir dik SKSpriteNode
değil, kendi alt sınıf eklerken
-(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;
}
}
Frustratingly, bu kod gayet güzel çalışıyor. Baska öneri?
Genel olarak SpriteKit ve Objective-C için yeni olmama rağmen, bu sınıfların bir örneğini nasıl oluşturduğumuzu görmüyorum? – Jide
Bu kodu koydum, sadece normal bir SKSprite oluşturduğunuzda yaratın, ancak HeroSprite'i kullanın. – DogCoffee
Bunu yapmanın harika yolu! Awesome – Septronic