// Use this for initialization
    void Start()
    {
        fsm           = new Core.FSM.FSM("PatrolDialogueNPCFSM");
        moveState     = fsm.AddState("MoveState");
        idleState     = fsm.AddState("IdleState");
        dialogueState = fsm.AddState("DialogueState");

        moveAction     = new WaypointMoveAction(moveState);
        idleAction     = new NPCIdleScoutAction(idleState);
        dialogueAction = new NPCDialogueAction(dialogueState);


        moveState.AddAction(moveAction);
        idleState.AddAction(idleAction);
        dialogueState.AddAction(dialogueAction);

        moveAction.Init(GetComponent <Rigidbody>(), gameObject.transform, movementSpeed, waypoints, "ToIdle");
        idleAction.Init(3, gameObject.transform);
        dialogueAction.Init(this, dialogueIdentifier);

        idleState.AddTransition("ToDialogue", dialogueState);
        idleState.AddTransition("ToNextWaypoint", moveState);

        moveState.AddTransition("ToIdle", idleState);
        dialogueState.AddTransition("ToIdle", idleState);

        fsm.Start("MoveState");
    }
示例#2
0
    // Use this for initialization
    void Start()
    {
        fsm        = new Core.FSM.FSM("PatrolNPCFSM");
        moveState  = fsm.AddState("MoveState");
        idleState  = fsm.AddState("IdleState");
        moveAction = new WaypointMoveAction(moveState);
        idleAction = new NPCIdleAction(idleState);

        moveState.AddAction(moveAction);
        idleState.AddAction(idleAction);

        moveAction.Init(GetComponent <Rigidbody>(), gameObject.transform, movementSpeed, waypoints, "ToIdle");
        idleAction.Init();

        idleState.AddTransition("ToNextWaypoint", moveState);
        moveState.AddTransition("ToIdle", idleState);

        fsm.Start("IdleState");
    }