如何确定单击了哪个SKSpriteNode?

时间:2014-06-29 03:52:38

标签: objective-c sprite-kit osx-mavericks skspritenode

我尝试使用SKSpriteNode作为从一个场景到下一个场景的过渡。我怎么能这样做?

[编辑]请注意,这适用于OSX而非iOS。 iOS的touchesBegan方法在OSX中似乎不起作用。

3 个答案:

答案 0 :(得分:5)

好的,这是OSX的解决方案。

您必须首先初始化场景(自身对象),以便监视点击次数。

self.userInteractionEnabled = YES; //do this somewhere in initialization

在mouseDown事件处理程序中,检查是否触摸了一个节点(在本例中是一个特定的SKSpriteNode)。

-(void)mouseDown:(NSEvent *)theEvent {
    CGPoint location = [theEvent locationInNode:self]; //get location of touch
    SKSpriteNode *spriteTouched = (SKSpriteNode*)[self nodeAtPoint:location]; //get a node if touched at that location
    //DO SOMETHING WITH THE NODE
    ...
}

答案 1 :(得分:2)

首先,您需要为节点设置名称。 node.name = @"node's name"; 然后在touchesBegan方法中添加:

for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];
        if([[self nodeAtPoint:location].name isEqualToString:@"node's name"]){
            //present scene code here
        }
    }

答案 2 :(得分:0)

试试这个,它为我工作

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

     for (UITouch *aTouch in touches) {
         if (aTouch.tapCount >= 1) {
            // The view responds to the tap
           // do something here...
     }
}