我正在使用Sprite Kit创建一个iOS应用程序&我正在尝试选择(onTouchBegan)一个位于另一个SKNode下面的SKNode。其结构为: FirstLayer(SKNode) - SecondLayer(SKNode) &第三层(SKNode)。我正在尝试选择SecondLayer并在onTouchMove中移动它。目前的问题是,touch现在可以识别3rdLayer。你能帮我吗?
发布于 2014-12-16 17:48:48
为了详细解释斯科特的评论,任何SKNode的zPosition属性本质上都是它所在的层,较高的层编号“更接近”屏幕的前面。因此,如果您想让nodeB位于nodeA之上,那么nodeA应该有一个比a的数字更大的zPosition,例如:
nodeA.zPosition = 1
nodeB.zPosition = 2如果您在创建节点时设置了节点的zPosition,则可以在'touchesBegan‘方法中对接触到的节点的zPosition设置条件检查。按照上面的示例,如果您想要触摸nodeA而不是nodeB,则需要检查被触摸节点的zPosition是否等于1
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if(node.zPosition == 1){
//do stuff to nodeA here
}
}我想这就是Scott要说的,我希望这能有所帮助。
https://stackoverflow.com/questions/27500742
复制相似问题