Cocos2d-x 精灵碰撞检测(方法一)
2014-05-29 08:29
495 查看
声明函数碰撞检测函数,两个精灵和重写update
cpp文件实现
初始2个精灵
开启触摸及定时器
触摸移动精灵sp2与精灵sp1发生碰撞
update函数检测碰撞,isCollision参数顺序:精灵1的坐标,精灵2的坐标,精灵1的宽,高, 精灵2的宽,高
源码下载地址:http://download.csdn.net/detail/oyangyufu/7415923
bool isCollision( CCPoint p1,CCPoint p2,int w1,int h1,int w2,int h2 ); CCSprite *sp2; CCSprite *sp1; virtual void update(float delta); //重写触摸事件 virtual void registerWithTouchDispatcher(); virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
cpp文件实现
初始2个精灵
sp1 = CCSprite::create("5.png"); sp1->setScale(0.3); sp1->setPosition(ccp(100, visibleSize.height/2)); this->addChild(sp1); sp2 = CCSprite::create("6.png"); sp2->setScale(0.3); sp2->setPosition(ccp(300, visibleSize.height/2)); this->addChild(sp2);
开启触摸及定时器
setTouchEnabled(true); scheduleUpdate();
触摸移动精灵sp2与精灵sp1发生碰撞
bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { return true; } void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { ; } //移动精灵 void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) { CCSize winSize = CCDirector::sharedDirector()->getVisibleSize(); if (sp2) { CCPoint pos = pTouch->getDelta(); CCPoint currentPos = sp2->getPosition(); currentPos = ccpAdd(currentPos, pos); currentPos = ccpClamp(currentPos, CCPointZero, ccp(winSize.width, winSize.height));//限制精灵出屏幕 sp2->setPosition(currentPos);//移动重设精灵坐标 } } void HelloWorld::registerWithTouchDispatcher() { CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true); }
update函数检测碰撞,isCollision参数顺序:精灵1的坐标,精灵2的坐标,精灵1的宽,高, 精灵2的宽,高
bool HelloWorld::isCollision( CCPoint p1,CCPoint p2,int w1,int h1,int w2,int h2 ) { if(abs(p1.x - p2.x) < w1 + w2 && abs(p1.y - p2.y) < h1 + h2) { return true; } return false; } void HelloWorld::update(float delta) { if (isCollision(sp1->getPosition(),sp2->getPosition(), 45, 28.3 , 47.5, 35)) { CCLOG("--------Is Collision, sp2.x: %f, sp2.y: %f", sp2->getPositionX(), sp2->getPositionY()); } else CCLOG("++++++++ Is't Collision, sp2.x: %f, sp2.y: %f", sp2->getPositionX(), sp2->getPositionY()); }
源码下载地址:http://download.csdn.net/detail/oyangyufu/7415923
相关文章推荐
- Cocos2d-x 精灵碰撞检测(方法二)
- cocos-Lua 捕鱼碰撞检测方法
- 游戏里实现碰撞检测方法
- 基于投影方法的碰撞检测以及一个测试DEMO【C + SDL】
- 简单碰撞检测方法
- 游戏里实现碰撞检测方法
- 鼠标与精灵的碰撞检测
- [郑群 原创]我研究的地形碰撞检测方法
- cocos2d-x 不同层控制精灵以及碰撞检测
- 碰撞检测方法
- 游戏里实现碰撞检测方法
- XNA4.0学习笔记2:控制精灵和碰撞检测
- J2ME下的游戏精灵的碰撞检测(转)
- 游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- 游戏里实现碰撞检测方法
- J2ME下的游戏精灵的碰撞检测
- 从零开始Android游戏编程(第二版) 第七章 精灵、帧动画与碰撞检测
- 技术转载:游戏里实现碰撞检测方法
- 多物体碰撞检测方法