void Start() { LV1Att = atControl.construct(atBuild); fsmSystem = new FSMSystem(this.gameObject); FSMBaseState bornState = new LV1BornState(fsmSystem); bornState.AddTransition(FSMTransition.LeavePlayer, FSMStateID.stayState); //巡逻状态,在构造参数传一个系统参数,确定该状态是在哪个状态系统中管理的,状态转换的时候调用 FSMBaseState stayState = new LV1StayState(fsmSystem); stayState.AddTransition(FSMTransition.SeePlayer, FSMStateID.attackState); stayState.AddTransition(FSMTransition.zeroHp, FSMStateID.death); //追逐状态 FSMBaseState attackState = new LV1AttackState(fsmSystem); attackState.AddTransition(FSMTransition.LeavePlayer, FSMStateID.stayState); attackState.AddTransition(FSMTransition.zeroHp, FSMStateID.death); FSMBaseState dieState = new LV1DieState(fsmSystem); fsmSystem.AddFSMState(bornState); fsmSystem.AddFSMState(stayState); fsmSystem.AddFSMState(attackState); fsmSystem.AddFSMState(dieState); }
// Use this for initialization void Start() { bossOneAt = atControl.construct(atBuild); mySystem = new FSMSystem(this.gameObject); FSMBaseState bornState = new bossOneBorn(mySystem); FSMBaseState stayState = new bossOneStay(mySystem); FSMBaseState attackState = new bossOneAttack(mySystem); FSMBaseState skillOne = new bossOneSkillOne(mySystem); FSMBaseState skillTwo = new bossOneSkillTwo(mySystem); FSMBaseState skillThree = new bossOneSkillThree(mySystem); FSMBaseState dieState = new bossOneDie(mySystem); bornState.AddTransition(FSMTransition.LeavePlayer, FSMStateID.stayState); stayState.AddTransition(FSMTransition.SeePlayer, FSMStateID.attackState); stayState.AddTransition(FSMTransition.zeroHp, FSMStateID.death); attackState.AddTransition(FSMTransition.LeavePlayer, FSMStateID.stayState); attackState.AddTransition(FSMTransition.highHp, FSMStateID.skillOne); attackState.AddTransition(FSMTransition.halfHp, FSMStateID.skillTwo); attackState.AddTransition(FSMTransition.zeroHp, FSMStateID.death); skillOne.AddTransition(FSMTransition.SeePlayer, FSMStateID.attackState); skillOne.AddTransition(FSMTransition.zeroHp, FSMStateID.death); skillTwo.AddTransition(FSMTransition.SeePlayer, FSMStateID.attackState); skillTwo.AddTransition(FSMTransition.lowHp, FSMStateID.skillThree); skillTwo.AddTransition(FSMTransition.zeroHp, FSMStateID.death); skillThree.AddTransition(FSMTransition.SeePlayer, FSMStateID.attackState); skillThree.AddTransition(FSMTransition.zeroHp, FSMStateID.death); mySystem.AddFSMState(bornState); mySystem.AddFSMState(stayState); mySystem.AddFSMState(attackState); mySystem.AddFSMState(skillOne); mySystem.AddFSMState(skillTwo); mySystem.AddFSMState(skillThree); mySystem.AddFSMState(dieState); }