2

我正在开发一款游戏一段时间,我通过反复试验与 convertToWorldSpace 合作。它总是奏效,但老实说,我不知道我在做什么。我真的很讨厌我不明白自己在做什么,但不幸的是,互联网上并没有提供太多关于这个问题的信息。所以我希望有人能解释一下,为什么我必须从节点的父节点调用 convertToWorldSpace,以及当我使用 convertToNodeSpace 时。我完全没有头绪。有人可以大致解释一下他们的工作并举个例子吗?我真的很感激!:-)

4

1 回答 1

5

简单的说...

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

nodespace 是图层的坐标网格。

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

希望这可以帮助!

- - 编辑 - -

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

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

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

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

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

因此,当您想要移动某个其他节点或图层的子节点(或获取其位置或其他任何内容)时,它会派上用场,因为大多数时候您想要移动它相对于屏幕而不是在该层内。

于 2012-11-02T16:37:59.973 回答