/// <summary> /// 选择我方怪兽将攻击的怪兽 /// </summary> /// <param name=""></param> public void ChooseBeAttackedMonster(CardBase monsterCard) { if (attackCard.GetDuelCardScript().GetOwner() != monsterCard.GetDuelCardScript().GetOwner() && (monsterCard.GetCardGameState() == CardGameState.FrontAttack || monsterCard.GetCardGameState() == CardGameState.FrontDefense || monsterCard.GetCardGameState() == CardGameState.Back) && monsterCard.CanBeAttacked()) { beAttackedCard = monsterCard; attackCard.GetDuelCardScript().SetAttackState(false); duelScene.SetAttackAnimationFinishEvent(() => { CheckCardCanChainLaunch(); }); duelScene.StartPlayAttackAnimation(attackCard.GetDuelCardScript().GetPosition(), beAttackedCard.GetDuelCardScript().GetPosition()); } }
protected override void RealProcessFunction() { //如果此时攻击的怪兽被破坏或不是攻击表示都会停止攻击。 if (attackCard.GetCardGameState() != CardGameState.FrontAttack) { AfterFinishProcessFunction(); return; } if (directAttack) { //如果应直接攻击,但对方召唤出可以被攻击的怪兽时,停止攻击。 if (ownerPlayer.GetOpponentPlayer().HaveBeAttackedMonster()) { AfterFinishProcessFunction(); return; } else { ownerPlayer.GetOpponentPlayer().BeDirectAttackedNotify(attackCard.GetID()); } } else { //如果被攻击的怪兽不能受到攻击时(特殊效果或不在怪兽区时),停止攻击。 if (!beAttackedCard.CanBeAttacked()) { AfterFinishProcessFunction(); return; } else { ownerPlayer.GetOpponentPlayer().BeAttackedMonsterNotify(attackCard.GetID(), beAttackedCard.GetID()); } } Attack(); AfterFinishProcessFunction(); }