//just one private WonderState() { if (_instance != null) { return; } _instance = this; }
void Start() { animator = GetComponent <Animator>(); var patrol = new WonderState <Feed>(threshold, speed, this.transform, this.GetComponent <PatrolWonder>()); var chase = new ChaseState <Feed>(this.transform, target, speed); var alert = new AlertState <Feed>(spotLight, this.GetComponent <Patrol>()); var meleeattack = new PatrolAttackState <Feed>(this.transform); patrol.AddTransition(Feed.EnemigoEntraEnLOS, chase); chase.AddTransition(Feed.EnemigoSaleDeLOS, alert); chase.AddTransition(Feed.EntraEnRangoDeAtaque, meleeattack); alert.AddTransition(Feed.EnemigoEntraEnLOS, chase); alert.AddTransition(Feed.NoHayEnemigos, patrol); meleeattack.AddTransition(Feed.SaleDeRangoDeAtaque, chase); meleeattack.AddTransition(Feed.EnemigoSaleDeLOS, alert); stateMachine = new FSM <Feed>(patrol); los = GetComponent <LOS>(); }