父旋转后获取SpriteKit节点的可见位置

时间:2014-08-10 00:12:18

标签: ios objective-c rotation sprite-kit

我正在使用Sprite Kit(呃,也许“学习”更适合)。我有一个方形游戏板:

+-----+-----+-----+
| 0,2 | 1,2 | 2,2 |
+-----+-----+-----+
| 0,1 | 1,1 | 2,1 |
+-----+-----+-----+
| 0,0 | 1,0 | 2,0 |
+-----+-----+-----+

在测试期间,我将精灵添加到棋盘位置2,0。然后我将板逆时针旋转90度,将精灵 - 视觉 - 旋转到位置2,2。当然,由于精灵的位置不会通过旋转来修改,因此实际的x,y坐标不会改变。我的算法等都围绕着“可视化”的电路板位置,使我无需编写所有4个旋转角度的代码。所以,我在内部知道2.0的精灵移动到2,2(视觉上);而我现在需要使用“在2,2位板上看到的精灵”。如何掌握雪碧的'视觉'x,y坐标?我试过了:

[_board convertPoint:p toNode:self];
[_board convertPoint:p toNode:self.view];     // didn't expect this to work

'p'是我从董事会第2,2位计算的CGPoint。这不是一个代码问题 - 它更像是一个noobie“我该怎么做”的问题。

1 个答案:

答案 0 :(得分:0)

要获得SKNode视觉位置,您需要在其.position&#39中转换其.parent ; s坐标系到.scene坐标系:

CGPoint vPos = [node.parent convertPoint:node.position toNode:node.scene];

看起来你做的第一次尝试([_board convertPoint:p toNode:self])应该有效,只要:

  1. p是您在_board坐标系中寻找的节点内的有效点。
  2. 从您的SKScene调用该代码,以便self引用该节点所在的场景。