Как я могу найти эквивалент -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];