Exemple #1
0
    // Use this for initialization
    void Start()
    {
        fsm                 = new FSM("AITest FSM Two");
        MoveLeftState       = fsm.AddState("MoveLeftState");
        MoveRightState      = fsm.AddState("MoveRightState");
        MoveLeftAction      = new MoveAction(MoveLeftState);
        MoveRightAction     = new MoveAction(MoveRightState);
        MoveLeftTextAction  = new TextAction(MoveLeftState);
        MoveRightTextAction = new TextAction(MoveRightState);

        //This adds the actions to the state and add state to it's transition map
        MoveLeftState.AddAction(MoveLeftTextAction);
        MoveLeftState.AddAction(MoveLeftAction);
        MoveRightState.AddAction(MoveRightTextAction);
        MoveRightState.AddAction(MoveRightAction);

        MoveLeftState.AddTransition("ToRight", MoveRightState);
        MoveRightState.AddTransition("ToLeft", MoveLeftState);

        //this initializes the actions
        MoveLeftTextAction.Init("AI Moving Left", 1f, "");
        MoveRightTextAction.Init("AI Moving Right", 1f, "");
        MoveLeftAction.Init(this.transform, new Vector3(1, 0, 0), new Vector3(-1, 0, 0), 1.0f, "ToRight");
        MoveRightAction.Init(this.transform, new Vector3(-1, 0, 0), new Vector3(1, 0, 0), 1.0f, "ToLeft");

        //Starts the FSM
        fsm.Start("MoveLeftState");
    }
    // Start is called before the first frame update
    void Awake()
    {
        damage       = enemyPreset.damage;
        moveTime     = enemyPreset.moveTime;
        idleTimeMin  = enemyPreset.idleTimeMin;
        idleTimeMax  = enemyPreset.idleTimeMax;
        wanderRadius = enemyPreset.wanderRadius;

        home = transform.position;

        trigger = GetComponentInChildren <DetectPlayer>();

        trigger.GetComponent <SphereCollider>().radius = enemyPreset.detectionRadius;

        navMeshAgent = GetComponent <NavMeshAgent>();

        navMeshAgent.speed = enemyPreset.speed;

        fsm = new FSM("MeleeAI FSM");

        WanderState = fsm.AddState("WanderState");
        IdleState   = fsm.AddState("IdleState");
        AlertState  = fsm.AddState("AlertState");
        MeleeState  = fsm.AddState("MeleeState");

        WanderAction = new WanderAction(WanderState);
        IdleAction   = new TextAction(IdleState);
        alertAction  = new AlertAction(AlertState);
        meleeAction  = new MeleeAction(MeleeState);

        WanderState.AddAction(WanderAction);
        IdleState.AddAction(IdleAction);
        AlertState.AddAction(alertAction);
        MeleeState.AddAction(meleeAction);

        WanderState.AddTransition("ToIdle", IdleState);
        WanderState.AddTransition("PlayerDetect", AlertState);
        IdleState.AddTransition("ToWander", WanderState);
        IdleState.AddTransition("PlayerDetect", AlertState);

        AlertState.AddTransition("ToIdle", IdleState);
        AlertState.AddTransition("ToMelee", MeleeState);
        MeleeState.AddTransition("ToAlert", AlertState);

        WanderAction.Init(this.transform, home, navMeshAgent, wanderRadius, moveTime, "ToIdle");
        IdleAction.Init("Idling", Random.Range(idleTimeMin, idleTimeMax), "ToWander");

        alertAction.Init(trigger, navMeshAgent, "ToIdle");
        meleeAction.Init(this.transform, damage, trigger, FindObjectOfType <PlayerManager>(), "ToAlert");

        fsm.Start("IdleState");
    }
    private void Start()
    {
        fsm          = new FSM("AITest FSM");
        IdleState    = fsm.AddState("IdleState");
        PatrolState  = fsm.AddState("PatrolState");
        PatrolAction = new TextAction(PatrolState);
        IdleAction   = new TextAction(IdleState);

        PatrolState.AddAction(PatrolAction);
        IdleState.AddAction(IdleAction);

        PatrolState.AddTransition("ToIdle", IdleState);
        IdleState.AddTransition("ToPatrol", PatrolState);

        PatrolAction.Init("AI on patrol", 3f, "ToIdle");
        IdleAction.Init("AI on idle", 2f, "ToPatrol");

        fsm.Start("IdleState");
    }
    private void Start()
    {
        fsm          = new FSM("AITest FSM");
        idleState    = fsm.AddState("IdleState");
        patrolState  = fsm.AddState("PatrolState");
        idleAction   = new TextAction(idleState);
        patrolAction = new TextAction(patrolState);

        //This adds the actions to the state and add state to it's transition map
        patrolState.AddAction(patrolAction);
        idleState.AddAction(idleAction);

        patrolState.AddTransition("ToIdle", idleState);
        idleState.AddTransition("ToPatrol", patrolState);

        patrolAction.Init("AI on Patrol", 3.0f, "ToIdle");
        idleAction.Init("AI on Idle", 2.0f, "ToPatrol");

        fsm.Start("IdleState");
    }