convertToWorld- / NodeSpace如何工作?

时间:2012-11-02 16:30:10

标签: iphone ipad cocos2d-iphone

我正在开发游戏一段时间,我通过试用和转换工作与convertToWorldSpace合作。错误。它总是很有效,但我不知道我要做的是说实话。我真的很讨厌我不明白我在做什么,但遗憾的是互联网并没有提供有关这个问题的更多信息。所以我希望有人可以解释一下,为什么我必须从节点的父节点调用convertToWorldSpace,以及当我使用convertToNodeSpace时。我完全没有头绪。有人可以解释一下他们做了什么,也许可以举个例子吗?我真的很感激! : - )

1 个答案:

答案 0 :(得分:5)

简单地说......

世界空间是屏幕的坐标网格。

nodespace是图层的坐标网格。

cocos2d和大多数其他游戏框架由一个场景中的多个层组成,你很可能会有一堆其他的小节点/精灵。当您计算图层中每个精灵的坐标时,您将使用节点空间,但是当您获得触摸位置时,它将位于世界空间中,因此您需要使用convertToNodeSpace等进行转换。

希望这有帮助!

----编辑----

也许一个例子会有所帮助...

 [somenode convertToWorldSpace:ccp(x, y)];

上面的代码会将坐标(x,y)转换为屏幕上的坐标。例如,如果(x,y)是(0,0),那么该位置将是节点的左下角,但不一定在屏幕上。这会将节点的(0,0)转换为屏幕的位置。

[somenode convertToNodeSpace:ccp(x, y)];

上面的代码会做相反的事情。它会将屏幕上的坐标(x,y)转换为某个节点上的坐标。

所以当你有想要移动的东西(或获得其他节点或层的孩子的位置)时它会变得很方便,因为大多数时候你想要移动它相对于它的任何东西。屏幕而不是在那层内。