Как я могу найти эквивалент -locationInNode для NSTouch?

Мое приложение SpriteKit Mac отвечает на события NSTouch с помощью события -touchesBeganWithEvent:(NSEvent). Тем не менее, вызов -locationInNode только дает мне местоположение координаты мыши для этого NSTouch. Но я пытаюсь сопоставить координаты касания на трекпаде с экраном следующим образом:

NSTouch *touch = [touches anyObject];
CGPoint sceneCoord;
sceneCoord.x = touch.normalizedPosition.x * self.size.width;
sceneCoord.y = touch.normalizedPosition.y * self.size.height;

Это переведет координаты трекпада в координаты окна / сцены. Но мне нужно знать местоположение касания в одном из SKNode, который находится на сцене. Для щелчков мышью я бы просто использовал [event locationInNode:theNode], но я не могу использовать этот вызов, так как я вручную вычисляю координату события выше.

Я удивлен, что у SpriteKit нет никаких призывов иметь дело с NSTouches.

1 ответ

Поскольку SKScene это подкласс SKNode, ты можешь позвонить [SKNode convertPoint:toNode:] на ваше SKScene преобразовать координаты в ваш узел.

NSTouch *touch = [touches anyObject];
CGPoint sceneCoord;
sceneCoord.x = touch.normalizedPosition.x * self.size.width;
sceneCoord.y = touch.normalizedPosition.y * self.size.height;

SKNode *nodeOfInterest = ...
CGPoint locationInNode = [scene convertPoint:sceneCoord toNode:nodeOfInterest];
Другие вопросы по тегам