如何让子节点的坐标系原点位于(0,0)而不是父节点的锚点处?

cocos creator与cocos2d js有一处显著的不同:子节点的坐标原点位于父节点的锚点处,而非(0,0)点。这样就造成了一些问题。

我有一个游戏需求如下:用户点击屏幕,将某个节点移动到用户点击处。

之前我获取用户点击的坐标x, y后,不再需要处理,直接setPosition(x, y)即可。而现在必须用x-cc.winSize.width/2,y-cc.winSize.height/2。因为我的父节点的锚点是屏幕中间。并且如果父节点的锚点是其他地方,则需要其他计算。非常麻烦。

请问是否有办法可以让子节点的坐标原点仍然是(0,0),而不是父节点的锚点?谢谢!

其实根本原因是子节点不应该是子节点,应该是和父节点平级的节点,这就没问题。
如果你非要作为子节点,那么可以有
方法一:在父节点下面添加一个节点A,使用 widget 组件定位在父节点左下角,然后原先子节点作为节点 A 的子节点。
方法二:父节点锚点设置为左下角,父节点使用 widget 组件定位。

非常感谢回复!: )
我的这个节点的父节点是Canvas节点~~然后我是让Canvas的脚本组件监听touch事件,获取了坐标,然后设置我想移动的节点,发现了这个问题。

我现在把节点和Canvas平级了,这个问题就好了。

但是和Canvas平级在概念上总感觉怪怪的,是不是不太好?

没事,平级挺好的。

1赞

creator 坐标系这边确实挺让我迷惑。
比如坐标系转换。 child节点的坐标要转到世界坐标,因为cocos坐标是基于父节点的, 所以以前用cocos自然的想到了parent.convertToWorldSpace(child.position);
而creator 是 child.converToWorldSpace(child.position);

另外发现creator竟然不用retain, release了!!! 不知道是怎么做了, 牛X。