У меня есть UITapGestureRecognizer
и UIPanGestureRecognizer
на UIView
с SKScene
на нем. Распознаватель жестов панорамирования перемещает SKNode слева направо, и я хочу, чтобы распознаватель жестов Tap обнаруживал дочерний элемент SKNode, который перемещается. Панорамирование работает нормально, но у меня проблемы с обнаружением касаний — жест касания запускает соответствующий метод, но я не уверен, как преобразовать координаты из вида в сцену в узел, чтобы определить, находится ли касание в одном из дочерние узлы.
UIView (с жестами) → SKScene → узел панорамирования → потомки узла панорамирования
Как проверить, является ли координата касания жеста касания каким-либо заданным SKNode?
-(void)tapAction:(UITapGestureRecognizer*)sender{
if (sender.state == UIGestureRecognizerStateEnded)
{
// handling code
CGPoint touchLocation = [sender locationOfTouch:0 inView:sender.view];
NSLog(@"TAP %@", NSStringFromCGPoint(touchLocation)
);
for (SKLabelNode *node in _containerNode.children) {
if ([node containsPoint:[node convertPoint:touchLocation fromNode:self.parent]]) {
//This is where I want the tap to be detected.
}
CGPoint checkPoint = [node convertPoint:touchLocation fromNode:self.scene];
NSLog(@"CheckPoint %@", NSStringFromCGPoint(checkPoint)
);
//NSLog(@"iterating nodes");
if ([node containsPoint:checkPoint]) {
NSLog(@"touch match %@", node);
}
}
}
}