//普通攻击 std::string HeroKnight::commonAttack() { m_vVelocity*=0.1; Vec2 diff=Vec2::ZERO; auto m_Armature=getArmature(); std::string strAnimateName= m_Armature->getAnimation()->getCurrentMovementID(); std::string strPlayName=""; if (getAnimateState(getActionFileMode()->ActionAttackName1)==BaseActionObject::AnimateState::Runing) { float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.96) return getActionFileMode()->ActionAttackName1; strPlayName=getActionFileMode()->ActionAttackName2; }else if(getAnimateState(getActionFileMode()->ActionAttackName2)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.94) return getActionFileMode()->ActionAttackName2; strPlayName=getActionFileMode()->ActionAttackName3; }else if(getAnimateState(getActionFileMode()->ActionAttackName3)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.65) return getActionFileMode()->ActionAttackName3; strPlayName=getActionFileMode()->ActionAttackName4; }else if(getAnimateState(getActionFileMode()->ActionAttackName4)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.99) return getActionFileMode()->ActionAttackName4; strPlayName=getActionFileMode()->ActionAttackName1; }else{ strPlayName=getActionFileMode()->ActionAttackName1; } //log("strPlayName:%s",strPlayName.c_str()); playAnimate(strPlayName); m_BodyState=GameEnum::BodyState::Attack; return strPlayName; }
//普通攻击 std::string HeroBow::commonAttack() { m_vVelocity*=0.1; Vec2 diff=Vec2::ZERO; auto m_Armature=getArmature(); std::string strAnimateName= m_Armature->getAnimation()->getCurrentMovementID(); std::string strPlayName=""; if (getAnimateState(getActionFileMode()->ActionAttackName1)==BaseActionObject::AnimateState::Runing) { float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.6) return getActionFileMode()->ActionAttackName1; strPlayName=getActionFileMode()->ActionAttackName2; vShootPos.y=kDownShootPosY; }else if(getAnimateState(getActionFileMode()->ActionAttackName2)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.6) return getActionFileMode()->ActionAttackName2; strPlayName=getActionFileMode()->ActionAttackName3; vShootPos.y=kShootPosY; }else if(getAnimateState(getActionFileMode()->ActionAttackName3)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.6) return getActionFileMode()->ActionAttackName3; strPlayName=getActionFileMode()->ActionAttackName4; vShootPos.y=kFinishShootPosY; }else if(getAnimateState(getActionFileMode()->ActionAttackName4)==BaseActionObject::AnimateState::Runing){ float currPercent= m_Armature->getAnimation()->getCurrentPercent(); if (currPercent < 0.99) return getActionFileMode()->ActionAttackName4; strPlayName=getActionFileMode()->ActionAttackName1; vShootPos.y=kShootPosY; }else{ strPlayName=getActionFileMode()->ActionAttackName1; vShootPos.y=kShootPosY; } playAnimate(strPlayName); m_BodyState=GameEnum::BodyState::Attack; return strPlayName; }
void Entiles::ShowDamage() { Chara* mpc = ((EChesses*) this)->m_pChara; mpc->Trig(TR_BEDAMA); //((EChessComp*) getComponent("controller"))->ELock(); // <伤害的格挡判定 while(miAvgFlag == 0 && !mbCanNotShield){ bool tbGd = false; CCLog(">[Entiles] ShowDamage() | Hit and Judge. GD."); if(((EChessComp*) getComponent("controller"))->HaveAI()) { CCLog(">[Entiles] ShowDamage() | AI Component."); tbGd = true; // <AI控制 }else{ CCLog(">[Entiles] ShowDamage() | PC Component."); tbGd = EventCenter::sharedEventCenter()->mbDefendLock; } if(!tbGd) break; if(!mpc->CanAct()) break; int tiGdVal = mpc->getvalue("b_gedang"); BattleField::sharedBattleField()->ClearTrigFlag(); mpc->Trig(TR_GEDANG); if(!BattleField::sharedBattleField()->mbTrigged){ CCLog(">[Entiles] ShowDamage() | GD:%d", tiGdVal); if(tiGdVal<=0) break; mpc->setvalue("b_gedang" , max(0, tiGdVal - 1)); } CCLog(">[Entiles] ShowDamage() | Show the GD."); int tiGd = 0 - mpc->getFixValue("def"); miFianDamage += tiGd; playAnimate("gedang",1); AnimateNoLastO(); break; } // <显示伤害 miFianDamage = max(0, miFianDamage); CCLog(">[Entiles] ShowDamage() | %d", miFianDamage); stringstream tsShow; if(miAvgFlag == 0 || mbCanNotAvg){ CCLog(">[Entiles] ShowDamage() | >>> SHOW"); tsShow << "-"; tsShow << miFianDamage; /*CCActionInterval* action1 = CCTintBy::create(0.12, -255, -255, -255); CCActionInterval* action2Back = action1->reverse();*/ //runAction(CCSequence::createWithTwoActions(CCRever); CCActionInstant* action1 = CCCallFunc::create(this, callfunc_selector(Entiles::DamIn)); CCActionInstant* action2Back = CCCallFunc::create(this, callfunc_selector(Entiles::DamOut)); CCActionInterval* a1 = CCTintBy::create(0.,122,122,122); CCActionInterval* a2 = a1->reverse(); /*((EChessComp*) getComponent("controller"))->ELock();*/ m_animator->runAction(CCSequence::create(/*CCCallFunc::create(((EChessComp*) getComponent("controller")),callfunc_selector(EChessComp::ELock)), */ //CCDelayTime::create(0.07), action1, CCFadeTo::create(0.01,160),CCDelayTime::create(0.12), CCFadeTo::create(0.01,255),action2Back, /*CCBlink::create(0.12,1),*/ /*CCCallFunc::create(((EChessComp*) getComponent("controller")),callfunc_selector(EChessComp::EUnLock)),*/ NULL)); mpc->sethp(mpc->gethp()-miFianDamage); mpc->checkVals(); if(mpc->m_bIsDead){ EGroup::sharedEGroup()->meLast = mpc; ((EChesses*) this)->meRS->m_pChara->Trig(TR_DEATH); } ((EChesses*) this)->meRS->m_pChara->Trig(TR_DAMAGE); ((EChesses*) this)->m_pChara->miBeDamage = miFianDamage; // <输入累计的伤害而不是最后一次 }else{ CCLog(">[Entiles] ShowDamage() | >>> MISS"); tsShow << "MISS"; ((EChesses*) this)->m_pChara->miBeDamage = 0; } ShowTextS(tsShow.str().c_str()); miFianDamage = 0; miDamage = 0; CCLog(">[Entiles] ShowDamage() | All Over"); }