我正在使用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“我该怎么做”的问题。
答案 0 :(得分:0)
要获得SKNode
的视觉位置,您需要在其.position
&#39中转换其.parent
; s坐标系到.scene
坐标系:
CGPoint vPos = [node.parent convertPoint:node.position toNode:node.scene];
看起来你做的第一次尝试([_board convertPoint:p toNode:self]
)应该有效,只要:
p
是您在_board
坐标系中寻找的节点内的有效点。SKScene
调用该代码,以便self
引用该节点所在的场景。