I'm discovering that UIButtons
don't work very well with SKScene
, So I'm attempting to subclass SKNode
to make a button in SpriteKit
.
The way I would like it to work is that if I initialize a button in SKScene
and enable touch events, then the button will call a method in my SKScene
when it is pressed.
I'd appreciate any advice that would lead me to finding the solution to this problem. Thanks.
you could use a SKSpriteNode as your button, and then when the user touches, check if that was the node touched. Use the SKSpriteNode's name property to identify the node:
//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; }
Add node to your scene:
[self addChild: [self fireButtonNode]];
Handle touches:
//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... } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With