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
イライラすることに、このコードは、私自身のサブクラスではなく、まっすぐに を追加すると問題なく機能します。助言がありますか?