在一个场景中我添加两根管子,再添加了一只鸟,然后遍历这两个碰撞,为什么小鸟不与上面管子碰撞,反而与两根管子的空隙相撞,并且小鸟可以实现下面的管子碰撞,我找不到原因啊,添加小鸟的代码:
//小鸟的飞行动画
m_bird = Cbird::create();
CC_BREAK_IF(! m_bird);
birdie->addObject(m_bird);
m_gameBatchNode->addChild(m_bird,3);
设置上下管道
//设置上水管
m_upipe = CCSprite::createWithSpriteFrameName(“obstacle_up.png”);
m_upipe->setAnchorPoint(ccp(0,0));
m_upipe->retain();
//设置下水管
m_dpipe = CCSprite::createWithSpriteFrameName(“obstacle_down.png”);
m_dpipe->setAnchorPoint(ccp(0,1));
m_dpipe->retain();
addChild(m_upipe,2);
addChild(m_dpipe,2);
设置者两个管道的位置:
//生成随机数0~1
float rheight = CCRANDOM_MINUS1_1();
float minx = 100;
float qheight = 150;
float qwidth = 100;
float pp = (600 - 2*minx - qheight)/2;
dpipePos = ccp( ((float)rand()/RAND_MAX)(qwidth - m_dpipe->getContentSize().width),40+minx+pp+pprheight+100);
upipePos = ccp( ((float)rand()/RAND_MAX)(qwidth - m_upipe->getContentSize().width),40+qheight+minx+pp+pprheight);
m_dpipe->setPosition(ccp(bufStartPos + dpipePos.x,dpipePos.y));
m_upipe->setPosition(ccp(bufStartPos + upipePos.x,upipePos.y));
fraise->addObject(m_dpipe);
//fraise->addObject(m_upipe);
碰撞:
CCObject* units; //管道
CCObject* bullets; // 小鸟
//判断管道和主角碰撞
CCARRAY_FOREACH(fraise,units)//遍历管道
{
CPipe* enemy = (CPipe*)units;// 管道
CCARRAY_FOREACH(birdie,bullets)//遍历小鸟
{
Cbird* bullet = (Cbird*)bullets;
if (collid(bullet,enemy))//
{
endGame();
return;
}
}
}
求大神指点,感激不尽!
![]()