新手刚接触游戏编程,cocos2d-x做一个简单的横版战斗游戏Demo卡在普通攻击判断上。
花了一些时间和别人讨论理清逻辑写了这个代码。应该还有很多优化的地方。
发出来与大家分享下。
没理清逻辑的时候,真写不出来
voID Contbutton::touchBegan(){ istouch=true;//按钮按下 this->schedule(schedule_selector(Contbutton::updatelongprogress),1);//蓄力时间判断 //做连击判断 if(touchCounts==0) onSingleClick(); if(touchCounts==1&&m_pHero->getAttackAction()->isDone()) ondoubleclick(); if(touchCounts==2&&m_pHero->getAttackActionB()->isDone()) onThreeClick(); if(touchCounts==3&&m_pHero->getAttackActionC()->isDone()) touchCounts=0;}voID Contbutton::touchended(){ istouch=false; presstimes=0; this->unschedule(schedule_selector(Contbutton::updatelongprogress)); //如果刚完成长按事件 则把按下次数清零 长按状态置空 直接返回 不继续执行 if (m_longProgress ) { touchCounts=0; m_longProgress=false; return; } this->scheduleOnce(schedule_selector(Contbutton::updateAttackDelay),0.8);}voID Contbutton::onSingleClick(){ cclOG("signle");//1连击 this->unschedule(schedule_selector(Contbutton::updateAttackDelay)); m_pHero->runAttackAction(); touchCounts++;} voID Contbutton::ondoubleclick(){ cclOG("double"); //2连击 this->unschedule(schedule_selector(Contbutton::updateAttackDelay)); m_pHero->runAttackActionB(); touchCounts++;} voID Contbutton::onThreeClick(){ cclOG("three"); //3连击 this->unschedule(schedule_selector(Contbutton::updateAttackDelay)); m_pHero->runAttackActionC(); touchCounts++;} voID Contbutton::onLongpressed(){ cclOG("preassed");//长按} voID Contbutton::updateAttackDelay(float ft){ touchCounts=0; }voID Contbutton::updatelongprogress(float ft){ if (istouch) { presstimes++; if (presstimes >= 2) { m_longProgress=true; onLongpressed(); } } else { presstimes=0; }}总结
以上是内存溢出为你收集整理的Cocos2d-x 3.3 动作游戏连续普通攻击判断全部内容,希望文章能够帮你解决Cocos2d-x 3.3 动作游戏连续普通攻击判断所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)