示例#1
0
    /// <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);
            }
        }
    }
示例#2
0
 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);
 }
示例#3
0
 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);
 }
示例#4
0
    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);
        }
    }
示例#5
0
    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);
        }
    }
示例#6
0
    /// <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);
            }
        }
    }
示例#7
0
    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);
            }
        }
    }
示例#8
0
    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);
        }
    }
示例#9
0
 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);
 }