public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType) { //if (attackType == OrderAttackType.COUNTER) // return AnimAttacksSwordCounter; return(AnimAttacksSwordL); }
public override void Reset(Agent agent) { base.Reset(agent); target = null; hit = false; attackPhaseDone = false; data = null; attackType = OrderAttackType.NONE; }
public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType) { if (attackType == OrderAttackType.X) { return(AnimAttacksSword1); } return(AnimAttacksSword2); }
public override AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType) { if (attackType == OrderAttackType.X) { return(AnimAttackX); } else if (attackType == OrderAttackType.O) { return(AnimAttackInjury); } //else if (attackType == OrderAttackType.BERSERK) // return AnimAttackBerserk; return(null); }
public override void UpdateGOAPAction() { if ((AgentAction as AgentActionAttackMelee).attackPhaseDone && NumberOfAttacks > 0) { if (CurrentAttacktype == OrderAttackType.X) { CurrentAttacktype = OrderAttackType.O; } else { CurrentAttacktype = OrderAttackType.X; } //Owner.SoundPlayPrepareAttack(); if (AgentAction != null) { AgentAction.GoapAction = null; AgentAction = MakeAgentAction(); AgentAction.GoapAction = this; Owner.AddAction(AgentAction); } } }
bool NextAttackIsAvailable(OrderAttackType attackType) { if (attackType != OrderAttackType.O && attackType != OrderAttackType.X) { return(false); } if (_comboProgress.Count == 5) { return(false); } List <OrderAttackType> progress = new List <OrderAttackType>(_comboProgress); progress.Add(attackType); for (int i = 0; i < _comboAttacks.Count; i++) { Combo combo = _comboAttacks[i]; bool valid = true; for (int ii = 0; ii < progress.Count; ii++) { if (progress[ii] != combo.comboSteps[ii].orderAttackType) { valid = false; break; } } if (valid) { return(true); } } return(false); }
// 以下函数可以删除 public virtual AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType) { return(null); }
public AnimAttackData ProcessOrderCombo(OrderAttackType attackType) { if (attackType != OrderAttackType.O && attackType != OrderAttackType.X) { return(null); } _comboProgress.Add(attackType); // 遍历每一种连招 for (int i = 0; i < _comboAttacks.Count; ++i) { Combo combo = _comboAttacks[i]; bool valid = _comboProgress.Count <= combo.comboSteps.Length; // 遍历出招记录 for (int ii = 0; ii < _comboProgress.Count && ii < combo.comboSteps.Length; ++ii) { if (_comboProgress[ii] != combo.comboSteps[ii].orderAttackType) { valid = false; break; } } if (valid) { combo.comboSteps[_comboProgress.Count - 1].data.lastAttackInCombo = (NextAttackIsAvailable(OrderAttackType.X) == false && NextAttackIsAvailable(OrderAttackType.O) == false); combo.comboSteps[_comboProgress.Count - 1].data.firstAttackInCombo = false; combo.comboSteps[_comboProgress.Count - 1].data.comboIndex = i; combo.comboSteps[_comboProgress.Count - 1].data.fullCombo = _comboProgress.Count == combo.comboSteps.Length; combo.comboSteps[_comboProgress.Count - 1].data.comboStep = _comboProgress.Count; //GuiManager.Instance.ShowComboProgress(ComboProgress); return(combo.comboSteps[_comboProgress.Count - 1].data); } } _comboProgress.Clear(); _comboProgress.Add(attackType); for (int i = 0; i < _comboAttacks.Count; i++) { if (_comboAttacks[i].comboSteps[0].orderAttackType == attackType) { // Debug.Log(Time.timeSinceLevelLoad + " New combo " + i + " step " + ComboProgress.Count); _comboAttacks[i].comboSteps[0].data.lastAttackInCombo = false; _comboAttacks[i].comboSteps[0].data.firstAttackInCombo = true; _comboAttacks[i].comboSteps[0].data.comboIndex = i; _comboAttacks[i].comboSteps[0].data.fullCombo = false; _comboAttacks[i].comboSteps[0].data.comboStep = 0; //GuiManager.Instance.ShowComboProgress(ComboProgress); return(_comboAttacks[i].comboSteps[0].data); } } Debug.LogError("Could not find any combo attack !!! Some shit happens"); return(null); }
public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType) { return(AnimAttacksSwordL); }
// 该函数可以删除 public override AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType) { //if (attackType == OrderAttackType.FATALITY) // return _attackKnockdown; return(null); }
public override void Activate() { CurrentAttacktype = OrderAttackType.X; NumberOfAttacks = UnityEngine.Random.Range(2, 4); base.Activate(); }