/// <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); }
/// <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); }