void Start()
    {
        player_anim = GetComponentInChildren <PlayerAnimation>();
        _rb         = GetComponent <Rigidbody>();
        _player     = GetComponent <Player>();
        _fsm        = new FSM <string>();

        _healthUI = gameObject.GetComponentInChildren <HealthUI>();

        IdleState <string> idle = new IdleState <string>(_fsm, player_anim, "Move", "Punch Attack", "Kick Attack");
        MoveState <string> move = new MoveState <string>(_player, _fsm, player_anim, "Attack", "Idle");
        //JumpState<string> jump = new JumpState<string>(_fsm, "Idle", _rb, _player);
        PunchAttackState <string> punchAttack = new PunchAttackState <string>(_fsm, player_anim, "Idle", "Kick Attack");
        KickAttackState <string>  kickAttack  = new KickAttackState <string>(_fsm, player_anim, "Idle", "Punch Attack");


        idle.AddTransition("Move", move);
        idle.AddTransition("Punch Attack", punchAttack);
        idle.AddTransition("Kick Attack", kickAttack);

        move.AddTransition("Idle", idle);
        move.AddTransition("Punch Attack", punchAttack);
        move.AddTransition("Kick Attack", kickAttack);

        //jump.AddTransition("Idle", idle);

        punchAttack.AddTransition("Idle", idle);
        punchAttack.AddTransition("Kick Attack", kickAttack);

        kickAttack.AddTransition("Idle", idle);
        kickAttack.AddTransition("Punch Attack", punchAttack);

        _fsm.SetInit(idle);
    }
Esempio n. 2
0
    public void MakeFSM()
    {
        IdleState idle = new IdleState();

        idle.AddTransition(Transition.SawPlayer, StateID.AttackingState);
        idle.AddTransition(Transition.LostPlayer, StateID.MovingState);

        MoveState move = new MoveState();

        move.AddTransition(Transition.SawPlayer, StateID.AttackingState);

        AttackState attack = new AttackState();

        attack.AddTransition(Transition.LostPlayer, StateID.MovingState);
        attack.AddTransition(Transition.IdleTransition, StateID.IdleStateID);

        DefendState defend = new DefendState();

        EvadeState evade = new EvadeState();

        WinState win = new WinState();

        DeathState death = new DeathState();



        fsm = new FSMSystem();
        fsm.AddState(move);
        fsm.AddState(attack);
        fsm.AddState(idle);
        fsm.AddState(defend);
        fsm.AddState(evade);
        fsm.AddState(win);
        fsm.AddState(death);
    }
Esempio n. 3
0
    private void ConstructFSM()
    {
        IdleState idle = new IdleState();

        idle.AddTransition(FSMTransitionType.CanBeMove, FSMStateType.Move);
        idle.AddTransition(FSMTransitionType.AttackWithSingleWield, FSMStateType.SingleWieldAttack);
        idle.AddTransition(FSMTransitionType.AttackWithDoubleHands, FSMStateType.DoubleHandsAttack);
        idle.AddTransition(FSMTransitionType.UsingRipple, FSMStateType.RippleAttack);
        idle.AddTransition(FSMTransitionType.UsingHeartAttack, FSMStateType.HeartAttack);
        idle.AddTransition(FSMTransitionType.UsingStygianDesolator, FSMStateType.StygianDesolator);
        idle.AddTransition(FSMTransitionType.UsingIceArrow, FSMStateType.IceArrow);
        idle.AddTransition(FSMTransitionType.UsingChoshimArrow, FSMStateType.ChoshimArrow);
        idle.AddTransition(FSMTransitionType.CanPickUp, FSMStateType.PickUp);
        idle.AddTransition(FSMTransitionType.UsingThunderBolt, FSMStateType.ThunderBolt);
        idle.AddTransition(FSMTransitionType.AttackWithSpear, FSMStateType.SpearAttack);
        idle.AddTransition(FSMTransitionType.CanDefend, FSMStateType.Defend);
        idle.AddTransition(FSMTransitionType.Falling, FSMStateType.Fall);

        MoveState move = new MoveState();

        move.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);
        move.AddTransition(FSMTransitionType.AttackWithSingleWield, FSMStateType.SingleWieldAttack);
        move.AddTransition(FSMTransitionType.AttackWithDoubleHands, FSMStateType.DoubleHandsAttack);
        move.AddTransition(FSMTransitionType.AttackWithSpear, FSMStateType.SpearAttack);



        DefendState defend = new DefendState();

        defend.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        SingleWieldAttackState singleWieldAttack = new SingleWieldAttackState();

        singleWieldAttack.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);
        singleWieldAttack.AddTransition(FSMTransitionType.AttackWithSingleWield, FSMStateType.SingleWieldAttack);
        singleWieldAttack.AddTransition(FSMTransitionType.CanBeMove, FSMStateType.Move);

        DoubleHandsAttackState dualWieldAttack = new DoubleHandsAttackState();

        dualWieldAttack.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);
        dualWieldAttack.AddTransition(FSMTransitionType.AttackWithDoubleHands, FSMStateType.DoubleHandsAttack);
        dualWieldAttack.AddTransition(FSMTransitionType.CanBeMove, FSMStateType.Move);


        SpearAttackState spearAttack = new SpearAttackState();

        spearAttack.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);
        spearAttack.AddTransition(FSMTransitionType.CanBeMove, FSMStateType.Move);

        RippleAttackState rippleAttack = new RippleAttackState();

        rippleAttack.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        HeartAttackState heartAttack = new HeartAttackState();

        heartAttack.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        StygianDesolatorState stygianDesolator = new StygianDesolatorState();

        stygianDesolator.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        IceArrowState iceArrow = new IceArrowState();

        iceArrow.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        ChoshimArrowState choshimArrow = new ChoshimArrowState();

        choshimArrow.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        ThunderBoltState thunderBolt = new ThunderBoltState();

        thunderBolt.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        PickUpState pickUp = new PickUpState();

        pickUp.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);

        FallState fall = new FallState();

        fall.AddTransition(FSMTransitionType.IsIdle, FSMStateType.Idle);



        AddFSMState(idle);
        AddFSMState(move);
        AddFSMState(defend);
        AddFSMState(singleWieldAttack);
        AddFSMState(dualWieldAttack);
        AddFSMState(rippleAttack);
        AddFSMState(heartAttack);
        AddFSMState(stygianDesolator);
        AddFSMState(iceArrow);
        AddFSMState(choshimArrow);
        AddFSMState(thunderBolt);
        AddFSMState(pickUp);
        AddFSMState(spearAttack);
        AddFSMState(fall);
    }