碰撞盒子getBoundingBox()的值为什么一样?

图片上这个样子是正常吗?这样肯定是重合的吧?为什么会这样?
是因为场景里NODE的原点一样?NODE代表什么层啊?是layer?

您好,getBoundingBox获取的是包围盒,您两个armature是否大小一致呢?

是的但是我后来这有做了个测试,同样的东西位置就有区别了。
如这个图片,就没重合不会被判断为碰撞了。

 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空的

然后


这个位置相同, if (pkArmature10004 -> getBoundingBox().intersectsRect(rect))直接判断下,结果就是重合了

后来改为
//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的位置,来做,下面没重合的结果!

auto* node = SceneReader::getInstance() -> createNodeWithSceneFile("PKScene/PKScene.json");   y/r@?Hl'  
 4i\l+ufC/  
addChild(node); =o -(g2o  

ztN9sq-f
node10003 = node -> getChildByTag(10003); =yj?^/
node10004 = node -> getChildByTag(10004); gQqd>Ao\
Tj #U.)
ArmatureDataManager::getInstance()->addArmatureFileInfo(“HeroAction/heroAction.ExportJson”); GF$Kms

u<=sj
pkArmature10003 = Armature::create(“heroAction”); efsR3 ComRender* armature10003 = ComRender::create(pkArmature10003,"CCArmature"); HawNQ'p6H 54G>3l
pkArmature10004 = Armature::create(“heroAction”); Y?!g8H6;e
pkArmature10004 -> setScaleX(-1.0); 9oiT,A$
ComRender* armature10004 = ComRender::create(pkArmature10004,“CCArmature”); 0gYY/sg
\J{qam 5
node10003 -> addComponent(armature10003); mQ-6;-L/
bAFyu Wf
node10004 -> addComponent(armature10004); Ic3 wiIuX
rfa
上面这样的创建方法是图1的样子,在场景编辑器里面直接创建两个node空的 eoCd
图1
a9Lkpz
?XJ%[Cy51
然后 }oKu Jb)
图2
ur @;Fl
图4
C; 6hMC
这个位置相同, if (pkArmature10004 -> getBoundingBox().intersectsRect(rect))直接判断下,结果就是重合了 's-Vyrl6d
5/GCO1q
后来改为 !r6 g>A"P
//auto
node = SceneReader::getInstance() -> createNodeWithSceneFile(“PKScene/PKScene.json”); ]L= 9}}>J0
l#*8m //addChild(node); asx'+@r#R~ -o{]+Psg //node10003 = node -> getChildByTag(10003); FX"__ //node10004 = node -> getChildByTag(10004); ^]{*;P 这些都注释掉!下面改为直接添加动画 " qyuFu :XQSl1 pkArmature10003->setPosition( ccp (Director::getInstance() -> getVisibleSize().width * 0.2, Director::getInstance() -> getVisibleSize().height * 0.5)); tytvG,? addChild(pkArmature10003); ?KUf}d
?6q{FL
pkArmature10004->setPosition( ccp (Director::getInstance() -> getVisibleSize().width * 0.8, Director::getInstance() -> getVisibleSize().height * 0.5)); ^2>na[Z
addChild(pkArmature10004); R{ 4k,
这样就不重合了 at{!AN
图5
bu J?Sd2
if (pkArmature10004 -> getBoundingBox().intersectsRect(rect))直接判断下没问题不重合 KL4z/C]`"
所以我前几个帖子和回复问题想问的就是这个,那些碰撞框重合可能因为这个 |%2 -PvL
为什么我在场景中直接添加两个NODE会重合 h")GsKK
我想用上面的那样的在场景中添加node的位置,来做,下面没重合的结果!