private void ChangeState(S_JohnState currentState, S_JohnState nextState) { switch (currentState) { case S_JohnState.Idle: switch (nextState) { case S_JohnState.MoveTowards: break; } break; case S_JohnState.MoveTowards: switch (nextState) { case S_JohnState.Idle: break; case S_JohnState.Patrol: break; case S_JohnState.BullyAction: break; } break; case S_JohnState.BullyAction: switch (nextState) { case S_JohnState.RunAway: break; case S_JohnState.BullyAction: Collider[] l_nearActors; l_nearActors = Physics.OverlapSphere(this.transform.position, m_proximityRadius); foreach (Collider nearActor in l_nearActors) { if (nearActor.gameObject.tag == "Actor") { Actor l_actor = nearActor.gameObject.GetComponent <Actor>(); l_actor.ChangeState(l_actor.m_currentState, S_ActorState.BullyActionGroupal); if (m_hp == 1) { //hacer que el grupo se active y le persiga foreach (Actor actor in L_actors) { actor.ChangeState(actor.m_currentState, S_ActorState.MoveTowards); m_newDestination = m_waitingPoint.position; } } } } break; } break; } }
/// <summary> /// Changes the state of its state machine by the specified transition name. /// </summary> /// <param name="transitionName">Transition name to move to.</param> public void ChangeState(string transitionName) { State newState; if (transitions.TryGetValue(transitionName, out newState)) { Actor.ChangeState(this, newState); } }