矩形碰撞要求同一容器吗?

矩形碰撞重叠检查无效,最后换成同一父容器后就可以了。矩形区域对象的表达是4个坐标吧,坐标与容器或可视对象有关吗?是不是2个容器里产生2个相对容器坐标,所以判断失败(我猜的),有没有什么办法解决?

rect(x, y, width, height) ,如果把其中一个矩形的xy值转换成另一个矩形碰撞对象的父容器相对坐标?

你是怎么判断的?对应的坐标是怎么计算的?

恩,谢谢,弄好了,获得2个对象的坐标差,然后减去其长宽一半得到矩形左下角。但有个奇怪问题,获得对象的长宽怎么是0啊?Size lSize =this->getContentSize();this里面的一个精灵->getContentSize()就正常的,只不过scale缩放函数不会帮你刷新长宽值得自己计算。关键还是getContentSize()函数结果有些搞不懂,还有获得this->getBoundingBox()的maxX==minX,maxY==minY,midX==maxX==minX???

哪个对象的content size是0?

Size thisSize = this->getContentSize();
log(“this->getContentSize().width=%4.2f”,thisSize.width);
log(“this->getContentSize().height=%4.2f”,thisSize.height);
Size aSpriteSize = _rune1->getContentSize();
log(“this::aSpriteSize->getContentSize().width=%4.2f”,aSpriteSize.width);
log(“this::aSpriteSize->getContentSize().height=%4.2f”,aSpriteSize.height);
输出:
this->getContentSize().width=0.00
this->getContentSize().height=0.00
this::aSpriteSize->getContentSize().width=360.00
this::aSpriteSize->getContentSize().height=360.00
结论:该不会是获得对象的纹理图片大小吧?因为this初始化是init()没有给纹理,我还以为获得容器以及里面所有精灵纹理集合区域。我猜想的解决办法是获得容器以及其所有子精灵的矩形区域,将矩形区域合并为一个大的矩形区域。枚举大容器,根据图层深度值提取精灵…

嗯,精灵默认的content size是纹理大小。

你可以转换同一坐标系后作判断。 矩形检测碰撞自己写也可以。 重要的是在同一个坐标系下。

面向对象来说,缩小对象应该是容器以及容器里面的可视对象都接受可视性的设置,获得对象矩形也是算上子节点的,纹理大小自己查看图片属性就可以获得,可视对象属性看上去就像常量,之所以使然是为了引擎性能吗?