iOS7 Sprite Kit如何禁用一个精灵的触摸,使其“通过”?

我知道,对于传统的UIViews,我可以将“启用用户交互”标记设置为NO,并且视图将不再响应触摸,让它们下面的视图接收触摸。

有什么方法可以在Sprite Kit中实现相同的“tap through”function吗? 到目前为止,我只见过使用“触摸开始”的人,得到了这一点,并在那个时候询问现场的节点。

这种方法的问题是 – 如果我想添加覆盖顶部的精灵(如怪物生活点等),他们也将回应触摸。 到目前为止,我试图通过为不同的节点创build自定义类来避免这个问题,然后有一个非常大的if语句,检查每个节点的类。

有没有更好的方法来实现精灵套件的“通过”function?

如果在子类SKSpriteNode上将userInteractionEnabled属性设置为YES ,则触摸代表将在类中调用。 因此,您可以在类中处理精灵的触摸。

但是,默认情况下, userInteractionEnabled属性设置为NO 。 因此,默认情况下,精灵上的触摸是“点击”。

因此,对于所需的叠加层,为精灵创build自定义类,在该类中实现touchesBegan:和其他委托,并在初始化时将userInteractionEnabled属性设置为YES

Sprite Kit只使用zPosition值来确定命中testing和绘图顺序。

所以如果你不想打他们,你可以把所有的精灵都放在0以上。 然后一个简单的逻辑testing就是zPostion> 0