public void CrearEstadoIdle() { // Este estado lo usa el agente para calcular un plan idleState = (fsm, gameObj) => { // Planeación goap // Obtener el estado del mundo Dictionary <string, object> worldState = goapData.GetWorldState(); // Obtener la meta del agente Dictionary <string, object> goal = goapData.CreateGoalState(); // Crear un plan Queue <GoapAction> plan = Planeador.ElPlan( gameObject, AccionesDisponibles, worldState, goal); // ¿Logramos tener un plan? if (plan != null) { Debug.Log("Tengo un plan!"); AccionesActuales = plan; goapData.PlanFound(goal, plan); maquinaDeEstados.popState(); // Saca el estado idle maquinaDeEstados.pushState(ActState); // pasa al estado de actuar } else { Debug.Log("No tengo plan :("); goapData.PlanFailed(goal); maquinaDeEstados.popState(); maquinaDeEstados.pushState(idleState); // Vuelva a intentar calcular un plan } }; }