在坐标平面之间转换

时间:2014-04-10 16:25:11

标签: ios7 sprite-kit

我目前正在处理作为图层的多个节点,我真的需要一种方法来转换它们之间的坐标,因为我有多个具有不同子节点的图层,这是一个复杂的场景所以我不想将它放在文本。任何链接也会非常感激。

2 个答案:

答案 0 :(得分:1)

直接从Apple Docs

开始
  

使用节点树时,有时需要将位置从一个坐标空间转换为另一个坐标空间。例如,在物理系统中指定关节时,关节位置在场景坐标中指定。因此,如果在局部坐标系中有这些点,则需要将它们转换为场景的坐标空间。

以下方法显示如何将节点的位置转换为场景坐标系。要求场景执行转换。请记住,节点的位置是在其父坐标系中指定的,因此代码将node.parent作为要转换的节点传递。您可以通过调用convertPoint:toNode:method

反向执行相同的转换
CGPoint positionInScene = [node.scene convertPoint:node.position fromNode:node.parent];

您需要执行坐标转换的一种情况是执行事件处理。鼠标和触摸事件需要从窗口坐标转换为视图坐标,并从那里转换为场景。为了简化您需要编写的代码,Sprite Kit添加了一些便捷方法:

在iOS中,使用位于UITouch对象上的locationInNode:和previousLocationInNode:将触摸位置转换为节点的坐标系。

在OS X中,使用NSEvent对象上的locationInNode:方法将鼠标事件转换为节点的坐标系。

答案 1 :(得分:1)

如果你在要求转换积分的图层上遇到这么多问题,你可能想重新考虑一下你如何设置游戏场景的策略。