从anchorPoint为(0.5,0.5)的场景获取点的绝对坐标?

时间:2015-04-10 05:42:42

标签: ios swift sprite-kit

如果包含的场景的anchorPoint为(0.5,0.5),那么将点转换为绝对坐标的正确方法是什么?从概念上讲,我们将anchorPoint设置为(0.5,0.5),然后添加一个位置为(0,0)的子项。假设设备是5S,转换应该产生(160,240)。

我们正在使用Swift。

2 个答案:

答案 0 :(得分:0)

在场景中添加SKNode。然后根据场景的框架设置其位置。示例代码在这里:

    var node = SKNode()
    node.anchorPoint = CGPointMake(0,0)
    node.position = CGPointMake(-scene.frame.width/2, -scene.frame.height/2)
    scene.addChild(node)

在此节点上添加您的精灵,您现在可以获得绝对位置〜

答案 1 :(得分:0)

您可以使用SKNode提供的以下methods来获取节点树中的相对点。

convertPoint:toNode:  
convertPoint:fromNode: 

使用上面的Carrl方法添加SKNode,您可以获得如下绝对点:

var relativeNode = SKNode()
relativeNode.anchorPoint = CGPointMake(0,0)
relativeNode.position = CGPointMake(-scene.frame.width/2, -scene.frame.height/2)
scene.addChild(relativeNode)

var absolutePoint = scene.convertPoint(someNode.position, toNode: relativeNode)    
//This will result in {160, 240} on a 5S.

这些方法考虑了节点的各种anchorPoints。