SpriteKitの学習で、私は小さなアドベンチャーゲームを作ろうとしています。ヒーローを作ってシーンに追加してから、後でtouchesBegan:
の間に、タッチがヒーローに由来するかどうかを検出し、それに応じてアクションを実行します。タッチ中にカスタムSKSpriteNodeが検出されない
私はヒーローをSKSpriteNode
として追加するとタッチが彼を検出します。私が彼をSKSpriteNode
のサブクラスとして追加しても、タッチはしません!追加の違いは:
_heroNode = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
対
_heroNode = [[ADVHeroNode alloc] init];
initは次のようになります。
- (id) init {
if (self = [super init]) {
self.name = @"heroNode";
SKSpriteNode *image = [SKSpriteNode spriteNodeWithImageNamed:@"hero.png"];
[self addChild:image];
}
return self;
}
SKSpriteNodeのサブクラスは、それがに追加されたという意味で働くようヒーローを追加しますシーンが、タッチは彼を検出しません。私touchesBegan:
は、次のようになります。それをまっすぐSKSpriteNode
はなく、私自身のサブクラスを追加するとき
-(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;
}
}
イライラ、このコードはうまく動作します。助言がありますか?
私はSpriteKitとObjective-Cには一般的ではありませんが、これらのクラスのインスタンスをどのように作成するのか分かりません。 – Jide
私はそのコードを入れませんでした。通常のSKSpriteを作成するのと同じように作成しますが、HeroSpriteを使用します。 – DogCoffee
それを行う素晴らしい方法! Awesome – Septronic