Пример #1
0
        public Enemy(Dictionary<string, object> attributes)
        {
            FSMAction noAction 		= new A_None();

            State S_Idle 			= new State("idle", new A_IdleEnter(), new A_Idle(), new A_IdleExit());
            State S_MoveToPosition	= new State("moveToPosition", new A_MoveToPositionEnter(), new A_MoveToPosition(), new A_MoveToPositionExit());
            State S_Attack 			= new State("attack", new A_AttackEnter(), new A_Attack(), new A_AttackExit());
            State S_Death 			= new State("death", new A_DeathEnter(), new A_Death(), new A_DeathExit());
            State S_Hurt			= new State("hurt", new A_HurtEnter(), new A_Hurt(), new A_HurtExit());

            Transition T_Idle 			= new Transition(S_Idle, noAction);
            Transition T_MoveToPosition	= new Transition(S_MoveToPosition, noAction);
            Transition T_Attack			= new Transition(S_Attack, noAction);
            Transition T_Death			= new Transition(S_Death, noAction);
            Transition T_Hurt			= new Transition(S_Hurt, noAction);

            S_Idle.addTransition(T_MoveToPosition, "moveToPosition");
            S_Idle.addTransition(T_Attack, "attack");
            S_Idle.addTransition(T_Death, "death");
            S_Idle.addTransition(T_Hurt, "hurt");

            S_MoveToPosition.addTransition(T_Idle, "idle");
            S_MoveToPosition.addTransition(T_Attack, "attack");
            S_MoveToPosition.addTransition(T_Death, "death");
            S_MoveToPosition.addTransition(T_MoveToPosition, "moveToPosition");
            S_MoveToPosition.addTransition(T_Hurt, "hurt");

            S_Attack.addTransition(T_Idle, "idle");
            S_Attack.addTransition(T_Death, "death");
            S_Attack.addTransition(T_Hurt, "hurt");

            S_Hurt.addTransition(T_Idle, "idle");
            S_Hurt.addTransition(T_Death, "death");
            S_Hurt.addTransition(T_Hurt, "hurt");

            PlayerData HookerData = new PlayerData(GameData.Hooker);
            PlayerData RobotData = new PlayerData(GameData.Robot);

            this.fsmc = FSM.FSM.createFSMInstance(S_Idle, noAction);
            this.attributes = attributes;

            this.playerData = new Dictionary<GameObject, PlayerData>();
            this.playerData[GameData.Hooker] = HookerData;
            this.playerData[GameData.Robot] = RobotData;

            this.jumpStrength = 0.0f;
            this.canJump = false;
        }
Пример #2
0
    void Start()
    {
        //vehicle
        CharacterController controller = GetComponent<CharacterController>();
        vehicle = new Vehicle(mass, maxSpeed, maxForce, controller.transform.position);

        timer = 0.0f;
        attributes = new Dictionary<string, int>();

        idle = new State(new Action_IdleEnter(), new Action_Idle(), new Action_IdleExit(), "idle");
        seek = new State(new Action_SeekEnter(), new Action_Seek(), new Action_SeekExit(), "seek");
        flee = new State(new Action_FleeEnter(), new Action_Flee(), new Action_FleeExit(), "flee");
        pursuit = new State(new Action_PursuitEnter(), new Action_Pursuit(), new Action_PursuitExit(), "pursuit");
        evade = new State(new Action_EvadeEnter(), new Action_Evade(), new Action_EvadeExit(), "evade");
        wander = new State(new Action_WanderEnter(), new Action_Wander(), new Action_WanderExit(), "wander");
        patrol = new State(new Action_PatrolEnter(), new Action_Patrol(), new Action_PatrolExit(), "patrol");

        seekEnter = new Transition(seek, new Action_None());
        idleEnter = new Transition(idle, new Action_None());
        fleeEnter = new Transition(flee, new Action_None());
        pursuitEnter = new Transition(pursuit, new Action_None());
        evadeEnter = new Transition(evade, new Action_None());
        wanderEnter = new Transition(wander, new Action_None());
        patrolEnter = new Transition(patrol, new Action_None());

        idle.addTransition(seekEnter, "seekEnter");
        idle.addTransition(fleeEnter, "fleeEnter");
        idle.addTransition(pursuitEnter, "pursuitEnter");
        idle.addTransition(evadeEnter, "evadeEnter");
        idle.addTransition(wanderEnter, "wanderEnter");
        idle.addTransition(patrolEnter, "patrolEnter");

        seek.addTransition(idleEnter, "idleEnter");
        seek.addTransition(fleeEnter, "fleeEnter");
        seek.addTransition(pursuitEnter, "pursuitEnter");
        seek.addTransition(evadeEnter, "evadeEnter");
        seek.addTransition(wanderEnter, "wanderEnter");
        seek.addTransition(patrolEnter, "patrolEnter");

        flee.addTransition(idleEnter, "idleEnter");
        flee.addTransition(seekEnter, "seekEnter");
        flee.addTransition(pursuitEnter, "pursuitEnter");
        flee.addTransition(evadeEnter, "evadeEnter");
        flee.addTransition(wanderEnter, "wanderEnter");
        flee.addTransition(patrolEnter, "patrolEnter");

        pursuit.addTransition(idleEnter, "idleEnter");
        pursuit.addTransition(seekEnter, "seekEnter");
        pursuit.addTransition(fleeEnter, "fleeEnter");
        pursuit.addTransition(evadeEnter, "evadeEnter");
        pursuit.addTransition(wanderEnter, "wanderEnter");
        patrol.addTransition(patrolEnter, "patrolEnter");

        evade.addTransition(idleEnter, "idleEnter");
        evade.addTransition(seekEnter, "seekEnter");
        evade.addTransition(fleeEnter, "fleeEnter");
        evade.addTransition(pursuitEnter, "pursuitEnter");
        evade.addTransition(wanderEnter, "wanderEnter");
        evade.addTransition(patrolEnter, "patrolEnter");

        wander.addTransition(idleEnter, "idleEnter");
        wander.addTransition(seekEnter, "seekEnter");
        wander.addTransition(fleeEnter, "fleeEnter");
        wander.addTransition(pursuitEnter, "pursuitEnter");
        wander.addTransition(evadeEnter, "evadeEnter");
        wander.addTransition(patrolEnter, "patrolEnter");

        patrol.addTransition(idleEnter, "idleEnter");
        patrol.addTransition(seekEnter, "seekEnter");
        patrol.addTransition(fleeEnter, "fleeEnter");
        patrol.addTransition(pursuitEnter, "pursuitEnter");
        patrol.addTransition(evadeEnter, "evadeEnter");
        patrol.addTransition(wanderEnter, "wanderEnter");

        // set the player controller for use by the state machine
        fsmc = FSM.FSM.createFSMInstance(idle, new Idle(), attributes, "hunter");
        fsmc.setController(GetComponent<CharacterController>());
        vehicle.setController(GetComponent<CharacterController());
    }