Esempio n. 1
0
    protected void ConstructFSM()
    {
        // ________________
        // PatrolState
        PatrolState patrolState = new PatrolState(new EnemyStateData(GetComponent <EnemyBase>(), this), Points);

        patrolState.AddTransition(Transition.FoundTarget, FSMStateID.TrackTarget);
        AddFSMState(patrolState);

        // ________________
        // TrackPlayerState
        TrackPlayerState rushState = new TrackPlayerState(new EnemyStateData(GetComponent <EnemyBase>(), this));

        rushState.AddTransition(Transition.LostTarget, FSMStateID.Patrol);
        rushState.AddTransition(Transition.FoundTarget, FSMStateID.ShootPlayer);
        rushState.AddTransition(Transition.ApproachedPlayer, FSMStateID.Retreating);
        AddFSMState(rushState);


        // ________________
        // ShootPlayerState
        ShootPlayerState shootPlayerState = new ShootPlayerState(new EnemyStateData(GetComponent <EnemyBase>(), this));

        shootPlayerState.AddTransition(Transition.LostTarget, FSMStateID.Patrol);
        shootPlayerState.AddTransition(Transition.ApproachedPlayer, FSMStateID.Retreating);
        AddFSMState(shootPlayerState);


        // ________________
        // ShootPlayerState
        RetreatingState retreatingState = new RetreatingState(new EnemyStateData(GetComponent <EnemyBase>(), this));

        retreatingState.AddTransition(Transition.LostTarget, FSMStateID.Patrol);
        AddFSMState(retreatingState);
    }
Esempio n. 2
0
    private void MakeFSM()
    {
        Vector3      target = new Vector3(Random.Range(transform.position.x - 5.0f, transform.position.x + 5.0f), Random.Range(transform.position.y - 5.0f, transform.position.y + 5.0f));
        RoamingState follow = new RoamingState(target);

        follow.AddTransition(Transition.SawPlayer, StateID.ChasePlayer);

        FollowPlayerState chase = new FollowPlayerState();

        chase.AddTransition(Transition.LostPlayer, StateID.FollowPath);
        chase.AddTransition(Transition.NearPlayer, StateID.AttackPlayer);

        ShootPlayerState attack = new ShootPlayerState();

        attack.AddTransition(Transition.SawPlayer, StateID.ChasePlayer);

        sm = new FSMSystem();
        sm.AddState(follow);
        sm.AddState(chase);
        sm.AddState(attack);
    }