2

ユーザー操作が有効になっている SKNode があり、それに SKEmitterNode を追加しています。ユーザー操作を子だけで無効にしたいと考えています。このコードは機能しません。

SKNode* parentNode = [[SKNode alloc] init];
parentNode.userInteractionEnabled = YES;
NSString* path = [[NSBundle mainBundle] pathForResource:@"ABCDEFG" ofType:@"xyz"];
SKEmitterNode* childNode = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
childNode.userInteractionEnabled = NO;
[parentNode addChild:childNode];

また、親に追加した後、ユーザーの操作を NO に設定しようとしました。これは可能ですか、それともエミッタを親の親に追加する必要がありますか?

4

2 に答える 2

1

もっと良い方法があると確信しています(そして、あることを願っています!!)が、それは始まりです。

多分これはそれが行われるべき方法です。問題は、スプライトの上にエミッタがある場合、タッチが通過しないことです (私のテストではうまくいきませんでした)。

  -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    for (UITouch *touch in touches) {

        UITouch *touch = [touches anyObject];
        CGPoint positionInScene = [touch locationInNode:self];
        SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene];

        if (touchedNode.userInteractionEnabled) {
            NSLog(@"Name of node touched %@", touchedNode.name);
        }
        else {
            NSLog(@"Can't touch this! %@", touchedNode.name);
        }
    }
}
于 2013-10-08T03:11:18.907 に答える