private IEnumerator Launch() { while (firedGrenadeCount <= grenadeMaxCount) { firedGrenadeCount++; GrenadeEffect effect = grenadeEffectPool.Allocate(); effect.Initialize(() => grenadeEffectPool.Release(effect)); Grenade granede = grenadePool.Allocate(); granede.transform.position = this.transform.position; granede.gameObject.SetActive(true); granede.Launch(effect, areaPoints.GetRandomPoint(target.position), target, () => grenadePool.Release(granede)); yield return(new WaitForSeconds(fireRate)); } }
public void Launch(GrenadeEffect effect, Vector2 target, Transform playerPosition, Action callBack) { this.effect = effect; this.callBack = callBack; TweenerCore <Vector3, Vector3, VectorOptions> moveTween = this.transform.DOMove(target, 1f); moveTween.OnStart(() => this.transform.DOScale(3, .5f).OnComplete(() => this.transform.DOScale(2, .5f))); moveTween.OnComplete(() => { this.transform.DOPunchScale(Vector3.one, .2f); Vector3 direction = (this.transform.position - playerPosition.position).normalized; Vector2 newPosition = this.transform.position - (direction); //Vector2 newPosition = playerPosition; xx = StartCoroutine(GrenadeClockingLoop(target, playerPosition, Random.Range(0.2f, 2.5f), 10)); damageAreaIndicator.SetActive(true); animator.SetTrigger("clocking"); }); }