Cocos2d-X 游戏之碰撞检测的方法
2014-10-24 13:56
316 查看
// 碰撞检测 第一种
bool
Tools::iscollision(CCSprite *sprite1,CCSprite *sprite2)
{
CCPoint point1 =sprite1->getPosition();
CCPoint point2 =sprite2->getPosition();
CCSize point1Size= sprite1->getContentSize();
CCSize point2Size= sprite2->getContentSize();
if(abs(point1.x-point2.x) <=point1Size.width/2
+point2Size.width/2&&abs(point1.y-point2.y) <=point1Size.height/2
+point2Size.height/2)
return
true;
return
false;
}
// 碰撞检测 第2种
bool GameLayer::pengLeft(CCRectbirdBox, CCRect barbox)
{
CCPoint targetPoint =ccp(birdBox.getMinX(), birdBox.getMidY());
returnbarbox.containsPoint(targetPoint);
}
//碰撞检测 第3种
bool AA::iscallision(CCSprite*mysprite,CCSprite *testsprite)
{
CCRect myrect=mysprite->boundingBox();
CCRect testrect=testsprite->boundingBox();
return myrect.intersectsRect(testrect);
}
//碰撞检测第三种
//是否碰撞
boolHaiGameLayer::isCollsion(CCSprite *sp1,CCSprite
*sp2)
{
CCRect myRect =
getRect(sp1);
CCRect testRect =
getRect(sp2);
return myRect.intersectsRect(testRect);
}
//获取精灵的rect
CCRectHaiGameLayer::getRect(CCSprite *sprite)
{
CCSize s = sprite->getContentSize();
CCPoint p = sprite->getPosition();
CCPoint ap = sprite->getAnchorPoint();
CCRect rect =
CCRectMake( p.x - ap.x * s.width
, p.y - ap.y * s.height,s.width,
s.height);
return rect;
}
//碰撞检测
voidHaiGameLayer::tection()
{
for(int i=0;i<fishArray->count();i++)
{
CCSprite *s=(CCSprite *)fishArray->objectAtIndex(i);
if(isCollsion(sp1,
s))
{
CCLog("shibai");
}
}
}
bool
Tools::iscollision(CCSprite *sprite1,CCSprite *sprite2)
{
CCPoint point1 =sprite1->getPosition();
CCPoint point2 =sprite2->getPosition();
CCSize point1Size= sprite1->getContentSize();
CCSize point2Size= sprite2->getContentSize();
if(abs(point1.x-point2.x) <=point1Size.width/2
+point2Size.width/2&&abs(point1.y-point2.y) <=point1Size.height/2
+point2Size.height/2)
return
true;
return
false;
}
// 碰撞检测 第2种
bool GameLayer::pengLeft(CCRectbirdBox, CCRect barbox)
{
CCPoint targetPoint =ccp(birdBox.getMinX(), birdBox.getMidY());
returnbarbox.containsPoint(targetPoint);
}
//碰撞检测 第3种
bool AA::iscallision(CCSprite*mysprite,CCSprite *testsprite)
{
CCRect myrect=mysprite->boundingBox();
CCRect testrect=testsprite->boundingBox();
return myrect.intersectsRect(testrect);
}
//碰撞检测第三种
//是否碰撞
boolHaiGameLayer::isCollsion(CCSprite *sp1,CCSprite
*sp2)
{
CCRect myRect =
getRect(sp1);
CCRect testRect =
getRect(sp2);
return myRect.intersectsRect(testRect);
}
//获取精灵的rect
CCRectHaiGameLayer::getRect(CCSprite *sprite)
{
CCSize s = sprite->getContentSize();
CCPoint p = sprite->getPosition();
CCPoint ap = sprite->getAnchorPoint();
CCRect rect =
CCRectMake( p.x - ap.x * s.width
, p.y - ap.y * s.height,s.width,
s.height);
return rect;
}
//碰撞检测
voidHaiGameLayer::tection()
{
for(int i=0;i<fishArray->count();i++)
{
CCSprite *s=(CCSprite *)fishArray->objectAtIndex(i);
if(isCollsion(sp1,
s))
{
CCLog("shibai");
}
}
}
相关文章推荐
- 技术转载:游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- (译)碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分
- cocos2d-x游戏开发 跑酷(八) 对象管理 碰撞检测
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
- 技术转载:游戏里实现碰撞检测方法
- (译)碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
- 【cocos2d-x IOS游戏开发-城市跑酷16】碰撞检测:撞墙 or 从房子上掉下来
- cocos2d-x游戏开发系列教程-坦克大战游戏之子弹的碰撞检测处理
- 游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测上
- 游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:碰撞检测和收集物品(二)
- 11. 碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分
- (译)碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测