public Pieza GetPieza(char key) { Pieza piezas = null; if (_piezas.ContainsKey(key)) { piezas = _piezas[key]; } else { switch (key) { case 'P': piezas = new Peon(key); break; case 'R': piezas = new Rey(key); break; case 'r': piezas = new Reina(key); break; case 'C': piezas = new Caballo(key); break; case 'A': piezas = new Alfil(key); break; case 'T': piezas = new Torre(key); break; case 'D': piezas = new Dama(key); break; } _piezas.Add(key, piezas); } return(piezas); }
// Start is called before the first frame update void Start() { if (escarabajo) { this.vida = 30; this.daño = 3; this.velocidad = 1.0f; } else { this.vida = 12; this.daño = 2; this.velocidad = 2.0f; } this.zonaDondeEsta = 1; pb = this.gameObject.GetComponent <PandaBehaviour>(); agente = this.gameObject.GetComponent <NavMeshAgent>(); agente.speed = this.velocidad; this.siguientePosicionExplorar = Vector3.zero; hormigueroDentro = GameObject.FindObjectOfType <Floor>(); tiempoEntreAtaques = tiempoEntreAtaquesMax; reina = GameObject.FindObjectOfType <Reina>(); if (escarabajo) { agente.avoidancePriority = 0; } }
// Start is called before the first frame update void Start() { miReina = GameObject.FindObjectOfType <Reina>(); huevoCollider = GetComponent <Collider>(); huevoCollider.isTrigger = true; // Variables huevo maxTimeParaCuidar = 150; tiempoQueAguantaSinCuidar = maxTimeParaCuidar - Random.Range(0, 20); tiempoParaNacer = 150 + Random.Range(0, 100); umbralDeAvisoCuidarHuevo = 70; umbralDePoderseCuidar = 100; }
/// <summary> /// Factory Method /// </summary> /// <param name="tipo">es el tipo de pieza, peon o reina del enum Jugadores</param> /// <returns>retorna un objeto de las subclases peon o reina dependiendo del tipo</returns> public static Pieza HacerPieza(TiposPiezas t) { Pieza rta; if (t == TiposPiezas.peon) { rta = new Peon(); rta.tipo = t; return(rta); } if (t == TiposPiezas.Reina) { rta = new Reina(); rta.tipo = t; return(rta); } return(null); }
// Start is called before the first frame update void Start() { reina = GameObject.FindObjectOfType <Reina>(); miTile = null; }
public void Cavar() { if (bocadillos.hormigaSeleccionada != null && bocadillos.hormigaSeleccionada == this) { if (!this.agente.isOnOffMeshLink) { bocadillos.Cavar(); } else { bocadillos.Nada(); } } //esta fuera if (zonaDondeEsta != 0) { Vector3 randomDirection; NavMeshHit aux; bool aux2; do { randomDirection = UnityEngine.Random.insideUnitSphere * 10 + reina.hormiguero.centro; aux2 = NavMesh.SamplePosition(randomDirection, out aux, 1.0f, NavMesh.AllAreas); } while (!aux2); posCavar = new Vector3(aux.position.x, 0, aux.position.z); //Debug.Log("Posicion a la que va: " + siguientePosicionExplorar); agente.SetDestination(posCavar); } else { posCavar = Vector3.zero; if (tiempoQueLlevaHaciendoElTunel < tiempoParaHacerTunel) { tiempoQueLlevaHaciendoElTunel += Time.deltaTime; agente.SetDestination(reina.hormiguero.gameObject.transform.position + new Vector3(Random.Range(0, reina.hormiguero.width), 0, Random.Range(0, reina.hormiguero.heigth))); Task.current.Succeed(); return; } else { int min = -1; int capacidadRestanteHormigas = reina.capacidadTotalDeHormigas - reina.totalHormigas; int capacidadRestanteComida = reina.capacidadTotalDeComida - reina.comidaTotal.Count; int capacidadRestanteHuevos = reina.capacidadTotalDeHuevos - reina.huevosTotal.Count; if (reina.hayQueCrearSalasComida && reina.hayQueCrearSalasHuevos && reina.hayQueCrearSalasHormigas) { min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, reina.importanciaComida, reina.importanciaHuevos); } else if (reina.hayQueCrearSalasHormigas && reina.hayQueCrearSalasHuevos) { min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, reina.importanciaComida, 0); } else if (reina.hayQueCrearSalasHormigas && reina.hayQueCrearSalasComida) { min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, reina.importanciaHormigas, 0, reina.importanciaHuevos); } else if (reina.hayQueCrearSalasComida && reina.hayQueCrearSalasHuevos) { min = Reina.CompareLess3(capacidadRestanteHormigas, capacidadRestanteComida, capacidadRestanteHuevos, 0, reina.importanciaComida, reina.importanciaHuevos); } else if (reina.hayQueCrearSalasHormigas) { min = 0; } else if (reina.hayQueCrearSalasComida) { min = 1; } else if (reina.hayQueCrearSalasHuevos) { min = 2; } Room aux; switch (min) { // no es necesario crear ninguna Sala; case -1: Task.current.Fail(); break; case 0: aux = reina.hormiguero.createCorridor(Room.roomType.LIVEROOM); if (aux != null) { reina.capacidadTotalDeHormigas += aux.capacidadTotalRoom; reina.salasHormigas.Add(aux); reina.hayQueCrearSalasHormigas = false; //Debug.Log("Sala de Hormigas creada, la capacidad ahora es: " + capacidadTotalDeHormigas); tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Succeed(); } else { reina.espacioLlenoHormiguero = true; tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Fail(); } break; case 1: aux = reina.hormiguero.createCorridor(Room.roomType.STORAGE); if (aux != null) { reina.salasComida.Add(aux); reina.capacidadTotalDeComida += aux.capacidadTotalRoom; reina.hayQueCrearSalasComida = false; //Debug.Log("Sala de Comida creada, la capacidad ahora es: " + capacidadTotalDeComida); tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Succeed(); } else { reina.espacioLlenoHormiguero = true; tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Fail(); } break; case 2: aux = reina.hormiguero.createCorridor(Room.roomType.EGGROOM); if (aux != null) { reina.salasHuevos.Add(aux); reina.capacidadTotalDeHuevos += aux.capacidadTotalRoom; reina.hayQueCrearSalasHuevos = false; //Debug.Log("Sala de Huevos creada, la capacidad ahora es: " + capacidadTotalDeHuevos); tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Succeed(); } else { reina.espacioLlenoHormiguero = true; tiempoQueLlevaHaciendoElTunel = 0; hayOrdenDeCavar = false; SacarDeOcupadas(); reina.numHormigasCavandoTuneles--; Task.current.Fail(); } break; } } } }
// Para detección de las hormigas (lista hormigasCerca) public void SistemaDeVision() { hormigasCerca = new List <HormigaGenerica>(); obrerasCerca = false; soldadosCerca = false; reinaCerca = false; RaycastHit hit; Vector3 dir = Vector3.zero; // Rayos fijos for (int i = 0; i < numRayosFijos; i++) { switch (i) { case 0: // delante dir = transform.TransformDirection(Vector3.forward); break; case 1: // detras dir = transform.TransformDirection(Vector3.back); break; case 2: // izq dir = transform.TransformDirection(Vector3.left); break; case 3: //der dir = transform.TransformDirection(Vector3.right); break; } if (Physics.Raycast(transform.position, dir, out hit, RayDistance)) { GameObject objetoColision = hit.collider.gameObject; if (objetoColision.transform.parent != null) { if (objetoColision.transform.parent.gameObject != this.gameObject) { Obrera hormigaObrera = objetoColision.transform.parent.gameObject.GetComponent <Obrera>(); Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>(); Reina hormigaReina = objetoColision.transform.parent.gameObject.GetComponent <Reina>(); if (hormigaObrera != null) { obrerasCerca = true; } if (hormigaSoldado != null) { soldadosCerca = true; } if (hormigaReina != null) { reinaCerca = true; } if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>())) { hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()); } } else { //Debug.Log("Chocandote contigo mismo"); } } } } // Rayos Móviles for (int j = 0; j < numRayosExtra; j++) { dir = new Vector3(Random.Range(-100, 101), 0, Random.Range(-100, 101)); dir = dir.normalized; if (Physics.Raycast(transform.position, dir, out hit, RayDistance)) { GameObject objetoColision = hit.collider.gameObject; if (objetoColision.transform.parent != null) { if (objetoColision.transform.parent.gameObject != this.gameObject) { Obrera hormigaObrera = objetoColision.transform.parent.gameObject.GetComponent <Obrera>(); Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>(); Reina hormigaReina = objetoColision.transform.parent.gameObject.GetComponent <Reina>(); if (hormigaObrera != null) { obrerasCerca = true; } if (hormigaSoldado != null) { soldadosCerca = true; } if (hormigaReina != null) { reinaCerca = true; } if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>())) { hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()); } //Debug.Log(hit.collider.gameObject.transform.parent.gameObject.tag); } else { //Debug.Log("Chocandote contigo mismo"); } } //Debug.DrawRay(transform.position, dir * RayDistance, Color.magenta); } } }