예제 #1
0
	void MaquinaEstados()
	{
		//Codigo de maquina
		//Definir en que estado estoy
		switch(estadoActual)
		{
			//------------------------------------------------------------------------------ Estado Inicio
		 case EstadosPosibles.Inicio:
		 {			
		  //Codigo Entrada
			if(entrada)
			{
				target = GameObject.FindGameObjectWithTag("Player");
				jugadorEnRango=false;
				entrada=false;
			}
		  //Codigo Constante
		     //Evaluando mi condicion de salida
		     //Cambiar de Estado
			 estadoActual = EstadosPosibles.Estatico;
		  //Codigo Salida
			if(estadoActual != EstadosPosibles.Inicio)
			{
				entrada=true;
			}			
		  }break;
			//======================================================================================			
			
			//------------------------------------------------------------------------------ Estado Estatico
		 case EstadosPosibles.Estatico:
		 {			
		  //Codigo Entrada
			if(entrada)
			{
				gameObject.GetComponent<Renderer>().material = matEstatico;				
				entrada=false;				
			}
		  //Codigo Constante
		     //Evaluando mi condicion de salida
			if(jugadorEnRango)// Cambio a Estado B
			{
				estadoActual=EstadosPosibles.Cazeria;
			}		
			
		     //Cambiar de Estado
		  //Codigo Salida
			if(estadoActual != EstadosPosibles.Estatico)
			{
				entrada=true;
			}			
		  }break;
			//======================================================================================	
			
			//------------------------------------------------------------------------------ Estado Cazeria
		 case EstadosPosibles.Cazeria:
		 {			
		  //Codigo Entrada
			if(entrada)
			{
				gameObject.GetComponent<Renderer>().material = matCazeria;//Coloreo para cazar
				entrada=false;
			}
		  //Codigo Constante
			gameObject.GetComponent<NavMeshAgent>().destination = target.transform.position;
		     //Evaluando mi condicion de salida
			if(!jugadorEnRango)
			{
				estadoActual= EstadosPosibles.Estatico;
			}
		     //Cambiar de Estado
		  //Codigo Salida
			if(estadoActual != EstadosPosibles.Cazeria)
			{
				gameObject.GetComponent<NavMeshAgent>().Stop();
				entrada=true;
			}			
		  }break;
			//======================================================================================	
			//------------------------------------------------------------------------------ Estado Impacto
		 case EstadosPosibles.Impacto:
		 {			
		  //Codigo Entrada
			if(entrada)
			{
				entrada=false;
			}
		  //Codigo Constante
		     //Evaluando mi condicion de salida
		     //Cambiar de Estado
		  //Codigo Salida
			if(estadoActual != EstadosPosibles.Impacto)
			{
				entrada=true;
			}			
		  }break;
			//======================================================================================	
			//------------------------------------------------------------------------------ Estado Muerte
		 case EstadosPosibles.Muerte:
		 {			
		  //Codigo Entrada
			if(entrada)
			{
				entrada=false;
			}
		  //Codigo Constante
		     //Evaluando mi condicion de salida
		     //Cambiar de Estado
		  //Codigo Salida
			if(estadoActual != EstadosPosibles.Muerte)
			{
				entrada=true;
			}			
		  }break;
			//======================================================================================	
			
			
		}//Fin Switch
		
	}//Fin Maquina Estados
 internal void DeterminarEstado()
 {
   if (_Velocidad == 0)
   {
     if (DetenidoEnPuntoRiego())
       this._Estado = EstadosPosibles.Carga;
     else
       this._Estado = EstadosPosibles.Detenido;
   }
   else
   {
     // TODO: como saber si esta regando, en transporte volciendo o al pedo???
     this._Estado = EstadosPosibles.Transito;
   }
 }
예제 #3
0
	// Use this for initialization
	void Start () 
	{
		estadoActual = EstadosPosibles.Inicio;
		entrada=true;	
	}