/// <summary> /// 子类实现该方法,每个角色在做一个操作时会传人操作对应的AgentAction. /// 该方法内执行状态切换和状态选择 /// </summary> /// <param name="_action">_action.</param> public override void DoAction(AgentAction _action) { // 当前状态是否执行新的AgentAction,不执行就返回false,然后切换状态 if (CurrentAnimState.HandleNewAction(_action)) { NextAnimState = null; } else { // todo: switch AgentAction -> NextAnimState // 根据AgentAction选择下一个状态 // if (_action is AgentActionIdle) // NextAnimState = AnimStates[(int)E_AnimState.E_Idle]; if (_action is AgentActionMove) { NextAnimState = AnimStates[(int)E_AnimState.E_Move]; } else if (_action is AgentActionAttack) { NextAnimState = AnimStates[(int)E_AnimState.E_Attack]; } // else // Debug.Log("Not Find AnimState!!!"); // 有下一个状态就切换到下一个状态 if (null != NextAnimState) { ProgressToNextStage(_action); } } }
public override void DoAction(AgentAction _action) { if (CurrentAnimState.HandleNewAction(_action)) { NextAnimState = null; } else { //if (_action is AgentActionIdle) //{ // NextAnimState = AnimStates[(int)(E_AnimState.E_Idle)]; //} if (_action is AgentActionMove) { NextAnimState = AnimStates[(int)(E_AnimState.E_Move)]; } //else //{ // Debug.Log("Not Find AnimState"); //} if (null != NextAnimState) { ProgressToNextStage(_action); } } //base.DoAction(_action); }
public override void DoAction(AgentAction _action) { if (CurrentAnimState.HandleNewAction(_action)) { NextAnimState = null; } else { //if (_action is AgentActionIdle) //{ // NextAnimState = AnimStates[(int)(E_AnimState.E_Idle)]; //} if (_action is AgentActionMove) { NextAnimState = AnimStates[(int)(E_AnimState.E_Move)]; Debug.Log("AgentActionMove"); } else if (_action is AgentActionAttack) { NextAnimState = AnimStates[(int)(E_AnimState.E_Attack)]; Debug.Log("AgentActionAttack"); } else if (_action is AgentActionGoTo) { NextAnimState = AnimStates[(int)(E_AnimState.E_GOTO)]; Debug.Log("AgentActionGoTo"); } if (null != NextAnimState) { ProgressToNextStage(_action); } } //base.DoAction(_action); }
public override void DoAction(AgentAction action) { if (CurrentAnimState.HandleNewAction(action) == true) { //Debug.Log("AC - Do Action " + action.ToString()); NextAnimState = null; } else { if (action is AgentActionGoTo) { NextAnimState = AnimStates[(int)E_MyAnimState.E_GOTO]; } if (action is AgentActioCombatMove) { NextAnimState = AnimStates[(int)E_MyAnimState.E_COMBAT_MOVE]; } else if (action is AgentActionRotate) { NextAnimState = AnimStates[(int)E_MyAnimState.Rotate]; } else if (action is AgentActionAttack) { NextAnimState = AnimStates[(int)E_MyAnimState.E_ATTACK_MELEE]; } else if (action is AgentActionAttackRoll) { NextAnimState = AnimStates[(int)E_MyAnimState.AttackRoll]; } else if (action is AgentActionWeaponShow) { NextAnimState = AnimStates[(int)E_MyAnimState.E_IDLE]; } else if (action is AgentActionPlayAnim || action is AgentActionPlayIdleAnim) { NextAnimState = AnimStates[(int)E_MyAnimState.E_PLAY_ANIM]; } else if (action is AgentActionInjury) { NextAnimState = AnimStates[(int)E_MyAnimState.E_INJURY]; } else if (action is AgentActionBlock) { NextAnimState = AnimStates[(int)E_MyAnimState.E_BLOCK]; } else if (action is AgentActionDeath) { NextAnimState = AnimStates[(int)E_MyAnimState.E_DEATH]; } ProgressToNextStage(action); } }
public override void DoAction(ActionBase action) { if (CurrentAnimState.HandleNewAction(action) == true) { //Debug.Log("AC - Do Action " + action.ToString()); NextAnimState = null; } else { if (action is ActionGoTo) { NextAnimState = AnimStates[(int)E_MyAnimState.GotoPos]; } if (action is ActionCombatMove) { NextAnimState = AnimStates[(int)E_MyAnimState.CombatMove]; } else if (action is ActionRotate) { NextAnimState = AnimStates[(int)E_MyAnimState.Rotate]; } else if (action is ActionAttack) { NextAnimState = AnimStates[(int)E_MyAnimState.Attack]; } else if (action is ActionWeaponShow) { NextAnimState = AnimStates[(int)E_MyAnimState.Idle]; } else if (action is ActionPlayAnim || action is ActionPlayIdleAnim) { NextAnimState = AnimStates[(int)E_MyAnimState.PlayAnim]; } else if (action is ActionInjury) { NextAnimState = AnimStates[(int)E_MyAnimState.Injury]; } else if (action is ActionKnockdown) { NextAnimState = AnimStates[(int)E_MyAnimState.Knockdown]; } else if (action is ActionDeath) { NextAnimState = AnimStates[(int)E_MyAnimState.Death]; } else if (action is ActionAttackWhirl) { NextAnimState = AnimStates[(int)E_MyAnimState.AttackWhirl]; } ProgressToNextStage(action); } }
/// <summary> /// 子类实现该方法,每个角色在做一个操作时会传人操作对应的AgentAction. /// 该方法内执行状态切换和状态选择 /// </summary> /// <param name="_action">_action.</param> public override void DoAction(AgentAction action) { // 当前状态是否执行新的AgentAction,不执行就返回false,然后切换状态 if (CurrentAnimState.HandleNewAction(action)) { NextAnimState = null; } else { if (action is AgentActionGoTo) { NextAnimState = AnimStates [(int)E_AnimState.E_GOTO]; } if (action is AgentActionMove) { NextAnimState = AnimStates [(int)E_AnimState.E_MOVE]; } else if (action is AgentActionAttack) { NextAnimState = AnimStates [(int)E_AnimState.E_ATTACK_MELEE]; } else if (action is AgentActionRoll) { NextAnimState = AnimStates [(int)E_AnimState.E_ROLL]; } else if (action is AgentActionWeaponShow) { NextAnimState = AnimStates [(int)E_AnimState.E_IDLE]; } else if (action is AgentActionUseLever) { NextAnimState = AnimStates [(int)E_AnimState.E_USE_LEVER]; } else if (action is AgentActionTeleport) { NextAnimState = AnimStates [(int)E_AnimState.Teleport]; } else if (action is AgentActionInjury) { NextAnimState = AnimStates [(int)E_AnimState.E_INJURY]; } else if (action is AgentActionDeath) { NextAnimState = AnimStates [(int)E_AnimState.E_DEATH]; } // 有下一个状态就切换到下一个状态 if (null != NextAnimState) { ProgressToNextStage(action); } } }
public override void DoAction(AgentAction action) { if (CurrentAnimState.HandleNewAction(action) == true) { //Debug.Log("AC - Do Action " + action.ToString()); NextAnimState = null; } else { if (action is AgentActionGoTo) { NextAnimState = AnimStates[(int)E_MyAnimState.E_GOTO]; } if (action is AgentActionMove) { NextAnimState = AnimStates[(int)E_MyAnimState.E_MOVE]; } else if (action is AgentActionAttack) { NextAnimState = AnimStates[(int)E_MyAnimState.E_ATTACK_MELEE]; } else if (action is AgentActionRoll) { NextAnimState = AnimStates[(int)E_MyAnimState.E_ROLL]; } else if (action is AgentActionWeaponShow) { NextAnimState = AnimStates[(int)E_MyAnimState.E_IDLE]; } else if (action is AgentActionUseLever) { NextAnimState = AnimStates[(int)E_MyAnimState.E_USE_LEVER]; } else if (action is AgentActionTeleport) { NextAnimState = AnimStates[(int)E_MyAnimState.Teleport]; } else if (action is AgentActionInjury) { NextAnimState = AnimStates[(int)E_MyAnimState.E_INJURY]; } else if (action is AgentActionDeath) { NextAnimState = AnimStates[(int)E_MyAnimState.E_DEATH]; } if (NextAnimState != null) { ProgressToNextStage(action); } } }
public override void DoAction(AgentAction action) { if (CurrentAnimState.HandleNewAction(action) == true) { //Debug.Log("AC - Do Action " + action.ToString()); NextAnimState = null; } else { if (action is AgentActionGoTo) { NextAnimState = AnimStates[(int)E_MyAnimState.gotoPos]; } if (action is AgentActioCombatMove) { NextAnimState = AnimStates[(int)E_MyAnimState.combatMove]; } else if (action is AgentActionRotate) { NextAnimState = AnimStates[(int)E_MyAnimState.Rotate]; } else if (action is AgentActionAttack) { NextAnimState = AnimStates[(int)E_MyAnimState.attackMelee]; } else if (action is AgentActionWeaponShow) { NextAnimState = AnimStates[(int)E_MyAnimState.idle]; } else if (action is AgentActionPlayAnim || action is AgentActionPlayIdleAnim) { NextAnimState = AnimStates[(int)E_MyAnimState.playAnim]; } else if (action is AgentActionInjury) { NextAnimState = AnimStates[(int)E_MyAnimState.injury]; } else if (action is AgentActionKnockdown) { NextAnimState = AnimStates[(int)E_MyAnimState.knockdown]; } else if (action is AgentActionDeath) { NextAnimState = AnimStates[(int)E_MyAnimState.death]; } ProgressToNextStage(action); } }
public bool DoAction(AnimAction action) { if (CurrentAnimState.HandleNewAction(action)) { /* * 当前状态处理了该行为 */ NextAnimState = null; return(true); } if (AnimStates.ContainsKey(action.Type)) { /* * 切换到该行为对应的状态 */ NextAnimState = AnimStates[action.Type]; SwitchToNewStage(action); return(true); } return(false); }