private IEnumerator Seek(GameObject target) { CreepScript targetScript = target.GetComponent <CreepScript>(); while (target != null) { m_CreepMovement.ChangeTarget(target, true); bool targetIsAtAttackRange = m_CreepMovement.TargetIsAtAttackRange(); CreepScript.CREEP_STATE currentState = m_CreepScript.GetCurrentState(); #region Can Destroy ? if (currentState != CreepScript.CREEP_STATE.DESTROYING && targetIsAtAttackRange) { m_CreepScript.SwitchToDestroyState(); StartCoroutine("Destroy", targetScript); } else if (currentState != CreepScript.CREEP_STATE.SEEKING && !targetIsAtAttackRange) { m_CreepScript.SwitchToSeekState(); StopCoroutine("Destroy"); } #endregion yield return(null); } StopSeekAndDestroy(); }
private IEnumerator Destroy(CreepScript targetScript) { while (targetScript != null) { // Attacking ennemy m_CreepScript.Attack(targetScript); if (m_CreepScript.m_CreepStats.m_Attribute.m_HP < 0) { StopSeekAndDestroy(); } yield return(new WaitForSeconds(m_CreepScript.m_CreepStats .m_Attribute.m_Attack.m_ReloadTime)); } }
public void Attack(CreepScript target) { target.GetDamage(m_CreepStats.m_Attribute.m_Attack.m_Power); }
/// <summary> /// Busca un creep libre en el array pasado como parametro /// </summary> /// <returns>El creep disponible</returns> /// <param name="evolve">Configuracion del creep</param> /// <param name="creepArray">Array donde busca creep</param> private CreepScript GetFreeCreep(CreepEvolve evolve, CreepScript[] creepArray){ if (EconomyManager.gene < evolve.creep.costGene) return null; for (int i = 0; i < evolve.numPool; i++) { if (!creepArray [i].creep.activeInHierarchy) { EconomyManager.gene -= evolve.creep.costGene; return creepArray [i]; } } return null; }
/// <summary> /// Rellenamos la pool del creep /// </summary> /// <param name="tempCreep">Prefab del creep</param> /// <param name="creepTempScript">Script perteneciente al prefab</param> /// <param name="cuantity">Cantidad de creeps a meter en la pool</param> /// <param name="creepArray">Pool donde se van a meter los creeps</param> void FillPoolCreep(GameObject tempCreep,Creep creepTempScript, int cuantity, CreepScript[] creepPool){ GameObject clone; for(int i = 0;i < cuantity;i++){ clone = Instantiate(tempCreep,Vector3.zero,Quaternion.identity) as GameObject; clone.transform.parent = transform; clone.name = "Creep"+creepTempScript.tier+"_"+i; CreepScript tempScript = new CreepScript(clone,clone.GetComponent<Creep>()); creepPool[i] = tempScript; } }
/// <summary> /// Se crea una pool con la configuracion de creep pasado por parametro /// </summary> /// <param name="creepEvolve">Configuracion del creep</param> private CreepScript[] CreatePoolCreep(CreepEvolve creepEvolve){ if (creepEvolve == null) return null; CreepScript[] creepPool = new CreepScript[creepEvolve.numPool]; FillPoolCreep (creepEvolve.creep.gameObject, creepEvolve.creep,creepEvolve.numPool, creepPool); return creepPool; }