Cocos2d-x 3.3 动作游戏连续普通攻击判断

前端之家收集整理的这篇文章主要介绍了Cocos2d-x 3.3 动作游戏连续普通攻击判断前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

新手刚接触游戏编程,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相关文章