//创建
pHuoQiu = Jineng::create(“huoqiu”);
pHuoQiu->setScale(2.0f);
pHuoQiu->setPosition(ccp(chongwu->getPositionX(), chongwu->getPositionY() + 20));
this->addChild(pHuoQiu);
pHuoQiu->runAction(CCMoveBy::create(2.5f, ccp(viewsize.width, 0)));
void ZhandouLayer::draw()
{
pEchongwu1->drawContour();
}
void ZhandouLayer::update(float delta)
{
//获取火球的boundingBox区域,用于碰撞检测
if (pHuoQiu == NULL) return;
rect = pHuoQiu->boundingBox();
CCDictElement *element = NULL;
CCDictionary *dict = pHuoQiu->getBoneDic();
CCDICT_FOREACH(dict, element)
{
CCBone *bone = static_cast<CCBone*>(element->getObject());
CCArray *bodyList = bone->getColliderBodyList();
CCObject *object = NULL;
CCARRAY_FOREACH(bodyList, object)
{
//得到一个碰撞框
ColliderBody *body = static_cast<ColliderBody*>(object);
//一个碰撞框包含所有的定点
CCArray *vertexList = body->getCalculatedVertexList();
float minx = 0, miny = 0, maxx = 0, maxy = 0;
int length = vertexList->count();
for (int i = 0; i<length; i++)
{
CCContourVertex2 *vertex = static_cast<CCContourVertex2*>(vertexList->objectAtIndex(i));
if (i == 0)
{
minx = maxx = vertex->x;
miny = maxy = vertex->y;
}
else
{
minx = vertex->x < minx ? vertex->x : minx;
miny = vertex->y < miny ? vertex->y : miny;
maxx = vertex->x > maxx ? vertex->x : maxx;
maxy = vertex->y > maxy ? vertex->y : maxy;
}
}
CCRect temp = CCRectMake(minx, miny, maxx - minx, maxy - miny);
if (temp.intersectsRect(rect))
{
pEchongwu1->setVisible(false);
}
}
}
}
为什么我这样写的到 CCDICT_FOREACH(dict, element)
{
CCBone bone = static_cast<CCBone>(element->getObject());
CCArray *bodyList = bone->getColliderBodyList(); 这儿就不下去了 检查bome->getCollderBodyList();为空 求高人解答 非常感谢
这个是不是需要把碰撞盒子在cocoStudio中画好呢
