求助!发现碰撞框重合原因,请教为什么会这样!场景编辑器NODE中添加动画和代码直接添加动画位置不一样

auto* node = SceneReader::getInstance() -> createNodeWithSceneFile("PKScene/PKScene.json");    
addChild(node); 

node10003 = node -> getChildByTag(10003); 
node10004 = node -> getChildByTag(10004); 

ArmatureDataManager::getInstance()->addArmatureFileInfo("HeroAction/heroAction.ExportJson"); 

pkArmature10003 = Armature::create("heroAction"); 
ComRender* armature10003 = ComRender::create(pkArmature10003,"CCArmature"); 

pkArmature10004 = Armature::create("heroAction");   
pkArmature10004 -> setScaleX(-1.0);     
ComRender* armature10004 = ComRender::create(pkArmature10004,"CCArmature"); 

node10003 -> addComponent(armature10003); 
node10004 -> addComponent(armature10004);

上面这样的创建方法是图1的样子,在场景编辑器里面直接创建两个node空的

然后


这是重合了的碰撞区域,但是运行显示的两个动画是分开的,按照上面的场景图的位置分开的,但boundingBox是重合的
if (pkArmature10004 -> getBoundingBox().intersectsRect(pkArmature10003 -> getBoundingBox()))直接判断下,结果就是重合了

后来改为
//auto* node = SceneReader::getInstance() -> createNodeWithSceneFile(“PKScene/PKScene.json”);
//addChild(node);
//node10003 = node -> getChildByTag(10003);
//node10004 = node -> getChildByTag(10004);

上面这些都注释掉!下面改为直接添加动画

pkArmature10003->setPosition( ccp (Director::getInstance() -> getVisibleSize().width * 0.2, Director::getInstance() -> getVisibleSize().height * 0.5));
addChild(pkArmature10003);

pkArmature10004->setPosition( ccp (Director::getInstance() -> getVisibleSize().width * 0.8, Director::getInstance() -> getVisibleSize().height * 0.5));
addChild(pkArmature10004);
这样就不重合了

if (pkArmature10004 -> getBoundingBox().intersectsRect(rect))直接判断下没问题不重合
所以我前几个帖子和回复问题想问的就是这个,那些碰撞框重合可能因为这个
为什么我在场景中直接添加两个NODE会重合
我想用上面的那样的在场景中添加node的位置,来做,下面没重合的结果!

这个问题是这样的,通过组件添加到CCNode,事实上就是为场景里面编辑的CCNode添加了一个CCArmature的孩子,两个具有CCArmature的CCNode是 两个CCNode分别挂一个CCArmature,你用CCArmature进行碰撞判断,CCArmature的x,y是相对于父亲CCNode的,所以他们的x,y是一致的,解决这个问题,需要让两个CCArmature的x,y位于同一个坐标系,可以转换为世界坐标系也可以转换为他们父亲的坐标系,再来进行判断。

大侠怎么解决啊?上次你回复我的就是上面那个图,照你的做法做了没问题。
CCArmature的x,y是相对于父亲CCNode的这个事相对于最外面的总的node的是嘛?就是场景编辑器里面最外面不能平齐创建node那层是吧?
这次这个问题如果是直接addChild上去就没问题是因为在 同一个node里面相当于一个面上的两个坐标点,而两个node那个是例如一个纸扑在另一个纸上面的层面是嘛?
确实是CCArmature的x,y是相对于父亲CCNode的,他们的XY都是相对于0,0这个点重合了,我测出来了
那么就这个例子,怎么让两个CCArmature的x,y位于同一个坐标系呢?在场景编辑器里面在他们俩的上面再加一个空的NODE??
或是一个NODE里放两个CCArmature?
求大侠指点。

大神帮忙啊!给点建议啊!怎么才能在场景编辑器里面做出你说的效果啊同一坐标系~~~~~~~~!

您好,可以通过获取世界坐标来使两个内容出于同一坐标系。感谢您对cocostudio的支持。

在场景里放那两个node然后再代码里获取世界坐标系?

恩恩~~:7: