Ejemplo n.º 1
0
 public void DoHitMove(Vector3 position, float moveDistance, float moveTime)
 {
     if (FSM != null)
     {
         if (FSM.CurrentState.ID == CreatureStateType.Dead)
         {
             return;
         }
         if (FSM.CurrentState.ID != CreatureStateType.Hit && FSM.CurrentState.ID != CreatureStateType.HitFly && FSM.CurrentState.ID != CreatureStateType.Attack)
         {
             HitMoveState hitMoveState = FSM.getStateByID(CreatureStateType.HitMove) as HitMoveState;
             if (hitMoveState != null)
             {
                 hitMoveState.Position     = position;
                 hitMoveState.MoveDistance = moveDistance;
                 hitMoveState.MoveTime     = moveTime;
                 if (FSM.CurrentState.ID == CreatureStateType.HitMove)
                 {
                     hitMoveState.ReStart();
                 }
                 else
                 {
                     FSM.changeState(CreatureStateType.HitMove);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
    public static FSMStateMachine GetCharacterEditorFSM(Creature owner)
    {
        FSMTranslationMap translationMap = new FSMTranslationMap();
        DeadState         dead           = new DeadState(owner);
        AttackState       attackState    = new AttackState(owner);
        IdleState         idle           = new IdleState(owner);
        WalkState         walk           = new WalkState(owner);
        HitState          hitState       = new HitState(owner);
        RunState          runState       = new RunState(owner);
        HitMoveState      hitMoveState   = new HitMoveState(owner);
        HitFlyState       hitFlyState    = new HitFlyState(owner);

        translationMap.addState(dead);
        translationMap.addState(idle);
        translationMap.addState(walk);
        translationMap.addState(runState);
        translationMap.addState(hitState);
        translationMap.addState(hitMoveState);
        translationMap.addState(attackState);
        translationMap.addState(hitFlyState);
        translationMap.MixAll();
        translationMap.check();
        FSMStateMachine fsm = new FSMStateMachine(translationMap);

        return(fsm);
    }