有沒有簡單的方法來做到這一點,但我能想到的一個方法是將一個子SKView添加到您的SKScene並放置一個的UIImageView作爲SKView裏面的唯一的事情。然後,您可以添加一個像SKView一樣正常的手勢識別器。
這裏就是我談論的例子:
UIImageView *button = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ButtonSprite"]];
SKView *spriteNodeButtonView = [[SKView alloc] initWithFrame:CGRectMake(100, 100, button.frame.size.width, button.frame.size.height)];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(someMethod:)];
[spriteNodeButtonView addGestureRecognizer:tap];
[spriteNodeButtonView addSubview:button];
你可以把SKView無論你想和使用任何手勢識別器上SKView:UITapGestureRecognizer
,UILongPressGestureRecognizer
,UISwipeGestureRecognizer
,UIPinchGestureRecognizer
,UIRotationGestureRecognizer
,UIPanGestureRecognizer
或。
那麼對於你的方法實現做這樣的事情:
-(void)someMethod:(UITapGestureRecognizer *)recognizer {
CGPoint touchLoc = [recognizer locationInView:self.view];
NSLog(@"You tapped the button at - x: %f y: %f", touchLoc.x, touchLoc.y);
}
您還可以看看[此帖](http://stackoverflow.com/questions/19082202/spritekit-setting-up-buttons-in-skscene)。有人創建了一個SKButton類,它只是創建一個像UIButton一樣工作的SKSpriteNode。如果你想使用更像按鈕的東西..我使用他的SKButton類,它適用於我迄今爲止需要的一切,但我不需要使用任何手勢識別器。 – Ponyboy47