//Atacar solo si ha pasado 1s desde el anterior ataque public IEstadoGallina Update(Gallina g) { if (Time.time - time > 1) { time = Time.time; //Si el objetivo esta muerto volvemos a buscar if (target == null) { return(g.eBuscar); } //Comprobamos que tipo de enemigo es para hacerle daño correctamente if (target.gameObject.CompareTag("Hormiga")) { Hormiga h = target.gameObject.GetComponent <Hormiga>(); if (h == null) { HormigaReina hr = target.gameObject.GetComponent <HormigaReina>(); hr.GetHit(g.berserk ? g.fuerza * 3 : g.fuerza); } else { h.GetHit(); } } if (target.gameObject.CompareTag("Pulpo")) { Octopus o = target.gameObject.GetComponent <Octopus>(); o.GetHit(g.berserk ? g.fuerza * 3 : g.fuerza); } if (target.gameObject.CompareTag("TRex")) { TRex t = target.gameObject.GetComponent <TRex>(); t.GetHit(g.berserk ? g.fuerza * 3 : g.fuerza); } //Cada ataque reduce un poco la fuerza de la gallina if (g.fuerza > 10) { g.fuerza -= 1; } //Si el ataque acabo con su objetivo, la gallina se lo come para restaurar sus estadisticas if (target == null) { g.vida = g.vidaInicial; g.fuerza = g.fuerzaInicial; g.velocidad = g.velocidadInicial; g.berserk = false; } } return(g.eAtacar); }
public IStatesTRex Update(TRex t) { //Si el enemigo desaparece, el TRex vaga. if (t.enemy == null) { return(t.wanderState); } t.agent.speed = attackSpeed; force = Settings.tamTrex * 20; //Si no hay colisión, sigue persiguiendo. if (!colision) { t.agent.isStopped = false; if (t.enemy == null) { return(t.wanderState); } else { t.agent.destination = t.enemy.transform.position; return(t.attackState); } //Si hay colisión, ataca. } else { colision = false; if (Time.time - time > 1f) { time = Time.time; //Se para. t.agent.isStopped = true; //Si es un pulpo, ataca hasta morir o matar, si lo mata puede comer. if (t.enemy.gameObject.CompareTag("Pulpo")) { Octopus rival = t.enemy.GetComponent <Octopus>(); rival.GetHit((int)force); if (t.enemy == null) { t.health += 20; } //Si es una hormiga, ataca hasta matar o morir. } else if (t.enemy.gameObject.CompareTag("Hormiga")) { Hormiga rival = t.enemy.GetComponent <Hormiga>(); if (rival == null) { HormigaReina rivalHR = t.enemy.GetComponent <HormigaReina>(); rivalHR.GetHit((int)force); } else { rival.GetHit(); } //Si es una gallina, ataca hasta morir o matar, si lo mata puede comer. } else if (t.enemy.gameObject.CompareTag("Gallina")) { Gallina rival = t.enemy.GetComponent <Gallina>(); rival.GetHit((int)force); if (t.enemy == null) { t.health += 20; } } } } return(t.attackState); }
public IStatesOctopus Update(Octopus o) { //Si no hay enemigo, vaga. if (o.enemy == null) { return(o.wanderState); } //Si está en el agua, es más rápido y más fuerte. if (o.water) { force = Settings.tamPulpos * 15f; o.agent.speed = speed * 2; } else { //Si su vida es baja, huye. if (o.health < Settings.tamPulpos * 15) { return(o.runState); } force = Settings.tamPulpos * 5f; o.agent.speed = speed; } //Si no hay colisión, sigue persiguiendo. if (!colision) { o.agent.isStopped = false; if (o.enemy == null) { return(o.wanderState); } else { o.agent.destination = o.enemy.transform.position; return(o.attackState); } //Si la hay, ataca. } else { colision = false; if (Time.time - time > 1f) { time = Time.time; //Se para. o.agent.isStopped = true; //Llama a las funciones de recibir daño del rival. if (o.enemy.gameObject.CompareTag("TRex")) { TRex rival = o.enemy.GetComponent <TRex>(); rival.GetHit((int)force); } else if (o.enemy.gameObject.CompareTag("Hormiga")) { Hormiga rival = o.enemy.GetComponent <Hormiga>(); if (rival == null) { HormigaReina rivalHR = o.enemy.GetComponent <HormigaReina>(); rivalHR.GetHit((int)force); } else { rival.GetHit(); } } else if (o.enemy.gameObject.CompareTag("Gallina")) { Gallina rival = o.enemy.GetComponent <Gallina>(); rival.GetHit((int)force); } } } return(o.attackState); }