如何为NSTouch找到-locationInNode的等效项



My SpriteKit Mac应用程序通过-touchesBeganWithEvent:(NSEvent)事件响应NSTouch事件。然而,调用-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的电话。

由于SKSceneSKNode的子类,因此可以在SKScene上调用[SKNode convertPoint:toNode:]来将坐标转换为节点。

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];

相关内容

  • 没有找到相关文章

最新更新