Example #1
0
    /// <summary>
    /// 状态机初始化
    /// </summary>
    private void ConstructFSM()
    {
        //针对每一个行为进行初始化, 针对于每个行为进行状态到行为转变的添加
        //巡逻
        Patrol patrol = new Patrol(this);

        patrol.AddTransition(Transition.SawPlayer, FSMActionID.Chasing);
        patrol.AddTransition(Transition.NoHealth, FSMActionID.Dead);
        //追逐
        Chase chase = new Chase(this);

        chase.AddTransition(Transition.ReachPalyer, FSMActionID.Attacking);
        chase.AddTransition(Transition.LostPlayer, FSMActionID.Patroling);
        chase.AddTransition(Transition.NoHealth, FSMActionID.Dead);
        //攻击
        Attack attack = new Attack(this);

        attack.AddTransition(Transition.SawPlayer, FSMActionID.Chasing);
        attack.AddTransition(Transition.LostPlayer, FSMActionID.Patroling);
        attack.AddTransition(Transition.NoHealth, FSMActionID.Dead);
        //死亡
        Dead dead = new Dead(this);

        dead.AddTransition(Transition.NoHealth, FSMActionID.Dead);
        //把状态列表进行初始化
        AddFSMState(patrol);
        AddFSMState(chase);
        AddFSMState(attack);
        AddFSMState(dead);
    }
Example #2
0
    /// <summary>
    /// 状态机初始化
    /// </summary>
    private void ConstructFSM()
    {
        //进行路点初始化
        pointList = GameObject.FindGameObjectsWithTag("PatrolPoint");

        Transform[] wayPoints = new Transform[pointList.Length];
        int         i         = 0;

        foreach (GameObject obj in pointList)
        {
            wayPoints[i] = obj.transform;
            i++;
        }
        //针对每一个行为进行初始化, 针对于每个行为进行状态到行为转变的添加
        //巡逻
        Patrol patrol = new Patrol(wayPoints, this);

        patrol.AddTransition((int)Transition.SawPlayer, (int)FSMActionID.Chasing);
        patrol.AddTransition((int)Transition.NoHealth, (int)FSMActionID.Dead);
        //追逐
        Chase chase = new Chase(wayPoints, this);

        chase.AddTransition((int)Transition.ReachPalyer, (int)FSMActionID.Attacking);
        chase.AddTransition((int)Transition.LostPlayer, (int)FSMActionID.Patroling);
        chase.AddTransition((int)Transition.NoHealth, (int)FSMActionID.Dead);
        //攻击
        Attack attack = new Attack(wayPoints, this);

        attack.AddTransition((int)Transition.SawPlayer, (int)FSMActionID.Chasing);
        attack.AddTransition((int)Transition.LostPlayer, (int)FSMActionID.Patroling);
        attack.AddTransition((int)Transition.NoHealth, (int)FSMActionID.Dead);
        //死亡
        Dead dead = new Dead();

        dead.AddTransition((int)Transition.NoHealth, (int)FSMActionID.Dead);

        //把状态列表进行初始化
        AddFSMState(patrol);
        AddFSMState(chase);
        AddFSMState(attack);
        AddFSMState(dead);

        StartFSM(patrol);
    }