public override void Execute(CharacterBehaviour behaviour, GameObject target = null) { realDmg = behaviour.CalculateAADamage(damage); GameObject arrow = ObjectPooler.SharedInstance.GetPooledObject(1); arrow.SetActive(true); arrow.transform.position = transform.position + new Vector3(0, 0.5f, 0); arrow.transform.rotation = Quaternion.Euler(0, target.transform.position.y, 0); arrow.GetComponent <ProjectileMovement>().Init(this, target.transform.position, projectileSpeed); }
public override void Execute(CharacterBehaviour behaviour, GameObject target = null) { realDmg = behaviour.CalculateAADamage(damage); Collider[] hitColliders = Physics.OverlapSphere(target.transform.position, radius, mask); for (int i = 0; i < hitColliders.Length; i++) { if (hitColliders[i].gameObject != target) { positions.Add(hitColliders[i].gameObject.transform); } } if (positions.Count > 0) { bonusEnemy1 = GetClosestEnemy(positions.ToArray()); GameObject miniArrow1 = ObjectPooler.SharedInstance.GetPooledObject(1); miniArrow1.SetActive(true); miniArrow1.transform.position = transform.position + new Vector3(0, 0.5f, 0); miniArrow1.transform.rotation = Quaternion.Euler(0, bonusEnemy1.position.y, 0); miniArrow1.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); miniArrow1.GetComponent <ProjectileMovement>().Init(this, bonusEnemy1.position, projectileSpeed); positions.Remove(bonusEnemy1); } if (positions.Count > 0) { bonusEnemy2 = GetClosestEnemy(positions.ToArray()); GameObject miniArrow2 = ObjectPooler.SharedInstance.GetPooledObject(1); miniArrow2.SetActive(true); miniArrow2.transform.position = transform.position + new Vector3(0, 0.5f, 0); miniArrow2.transform.rotation = Quaternion.Euler(0, bonusEnemy2.position.y, 0); miniArrow2.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); miniArrow2.GetComponent <ProjectileMovement>().Init(this, bonusEnemy2.position, projectileSpeed); positions.Clear(); } GameObject arrow = ObjectPooler.SharedInstance.GetPooledObject(1); arrow.SetActive(true); arrow.transform.position = transform.position + new Vector3(0, 0.5f, 0); arrow.transform.rotation = Quaternion.Euler(0, target.transform.position.y, 0); arrow.GetComponent <ProjectileMovement>().Init(this, target.transform.position, projectileSpeed); }