Cocos2d-x使用iPhone的多点触控实现双机游戏

Cocos2d-x使用iPhone的多点触控实现双机游戏,第1张

概述        之前在网上看到的多点触控的实现都是规定了哪个对象必须是第一个触点,哪个必须是第二个触点,以此类推。。。。。。多点触控的触点有一个ID数组,多点触控的实现是为每一个触点指定控制对象,为了实现第一个触点可以是任意一个对象,第二个触点是除了第一个对象的其他任一个对象,可以通过计算距离来判断将触点分给哪个对象: 这里以两个触点举例:         假设我们设计一个飞机游戏,可以同时控制两 之前在网上看到的多点触控的实现都是规定了哪个对象必须是第一个触点,哪个必须是第二个触点,以此类推。。。。。。多点触控的触点有一个ID数组,多点触控的实现是为每一个触点指定控制对象,为了实现第一个触点可以是任意一个对象,第二个触点是除了第一个对象的其他任一个对象,可以通过计算距离来判断将触点分给哪个对象: 这里以两个触点举例: 假设我们设计一个飞机游戏,可以同时控制两个飞机,这就用到多点触控:

settouchEnabled(true);//开启多触点监听//用户手指进行移动或者拖拽voID Game::cctouchesMoved(CCSet *ptouches,CCEvent *pEvent){   CCSetIterator iter = ptouches->begin();   if(plane0IsExist)//多机模式,单机模式不涉及多点触控   {    for (;iter !=ptouches->end(); iter++)   {       //获取两个飞机对象       CCSprite *sp2 =(CCSprite*)this->getChildByTag(tag_player0);       CCSprite *sp1 =(CCSprite*)this->getChildByTag(tag_player);       CCPointpoint1=sp1->getposition();       CCPointpoint2=sp2->getposition();       CCtouch *ptouch =(CCtouch*)(*iter);       CCPoint location =ptouch->getLocation();       //根据触点与两个飞机之间的距离判断触控情况      //首先触点与飞机必须足够近,不然用户并没有触碰到飞机      //触点应该给相对较近的那个飞机       if(ptouch->getID()==0)       {          if (distance(location,point1)<100.0){             sp1->setposition(location);          }          else if(distance(location,point2)<100.0)             sp2->setposition(location);       }       else if(ptouch->getID()==1)       {          if (distance(location,point2)<100.0){             sp2->setposition(location);          }          else if(distance(location,point1)<100.0)             sp1->setposition(location);       }   }   }else{// 单机模式       CCSprite *sp1 =(CCSprite*)this->getChildByTag(tag_player);       CCPointpoint1=sp1->getposition();       CCtouch *ptouch =(CCtouch*)(*iter);       CCPoint location =ptouch->getLocation();       if (distance(point1,location)<=sp1->getContentSize().wIDth){          sp1->setposition(location);       }   }}//删除多触点的委托监听voID Game::onExit(){   this->unscheduleUpdate();   this->unscheduleAllSelectors();   CCDirector::sharedDirector()->gettouchdispatcher()->removeDelegate(this);   cclayer::onExit();}

工程源码: SpaceWar-GitHub 总结

以上是内存溢出为你收集整理的Cocos2d-x使用iPhone的多点触控实现双机游戏全部内容,希望文章能够帮你解决Cocos2d-x使用iPhone的多点触控实现双机游戏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存