为什么不触摸sprite套件中的开关允许我访问精灵名称?

时间:2015-11-01 22:50:07

标签: ios objective-c sprite-kit

当我用断点检查我的触摸事件时,我注意到我用以下代码检测到的触摸节点没有.name。有帮助吗?我可以通过任何其他方式检查我触及的节点。我希望我的节点能够代表身体的各个部分,并且相信为每个身体部位创建物理身体可能会减慢应用程序的速度。

以下是我的代码。不是很复杂:

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [super touchesBegan:touches withEvent:event];
    UITouch *touch = [touches anyObject];
    CGPoint positionInScene = [touch locationInNode:self];
    SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene];


    //if touched node equal to one of these then ...
    if([touchedNode.name isEqualToString:@"head.png"]){
        [self alert:@"User has touched the head: " Message:@"Thank You."];
    }

}

1 个答案:

答案 0 :(得分:2)

SKNode的名称属性未通过调用SKSpriteNode initWithImageNamed设置:名称纯粹用于游戏逻辑。来自SKNode参考指南。

  

此属性用于标识游戏其他部分中的节点   逻辑。例如,您可以将此名称用作碰撞的一部分   测试。您还可以按名称搜索树中的节点。

如果您没有明确设置SKNode的名称属性,则不会设置它。