1. ホーム
  2. ios

[解決済み] SKSceneのボタン設定

2023-07-10 07:37:57

質問

私は、以下のことを発見しています。 UIButtons とはあまり相性が良くないことが分かってきました。 SKScene とはうまく動作しません。 SKNode の中にボタンを作るために SpriteKit .

私が望む動作は、ボタンを初期化する際に SKScene でボタンを初期化してタッチイベントを有効にすると、そのボタンは SKScene のメソッドを呼び出します。

この問題の解決策を見つけることにつながるようなアドバイスがあれば幸いです。ありがとうございます。

どのように解決するのですか?

SKSpriteNodeをボタンとして使い、ユーザーがタッチしたときに、それがタッチされたノードかどうかをチェックすることができます。SKSpriteNodeのnameプロパティを使って、ノードを特定する。

//fire button
- (SKSpriteNode *)fireButtonNode
{
    SKSpriteNode *fireNode = [SKSpriteNode spriteNodeWithImageNamed:@"fireButton.png"];
    fireNode.position = CGPointMake(fireButtonX,fireButtonY);
    fireNode.name = @"fireButtonNode";//how the node is identified later
    fireNode.zPosition = 1.0;
    return fireNode;
}

ノードをシーンに追加します。

[self addChild: [self fireButtonNode]];

タッチを処理します。

//handle touch events
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    //if fire button touched, bring the rain
    if ([node.name isEqualToString:@"fireButtonNode"]) {
         //do whatever...
    }
}