public void SpawnOneHealingFX() { spawnPos = (Vector2)spawnTrans.position + (Random.insideUnitCircle * spawnCircleRadius); staticSpritePoolObject = staticSpritePool.RequestStaticSpritePoolObject(); staticSpritePoolObject.transform.position = spawnPos; staticSpritePoolObject.transform.parent = playerParent; staticSpritePoolObject.spriteR.sprite = crossFXSprite; staticSpritePoolObject.StaticSpriteInUse(); //lastFXSpawned = Instantiate(healingCrossFX, spawnPos, Quaternion.identity, playerParent); // Start movement coroutine on that FX object. StartCoroutine(FXMovement(staticSpritePoolObject)); }
IEnumerator FXMovement(StaticSpritePoolObject _statSpriteObject) { StaticSpritePoolObject statSpriteObject = _statSpriteObject; float timer = 0f; float timeMult = 1 / timeToMove; Vector2 startPos = statSpriteObject.transform.localPosition; Vector2 endPos = startPos + (Vector2.up * moveDist); while (timer < 1f) { timer += Time.deltaTime * timeMult; statSpriteObject.transform.localPosition = Vector2.Lerp(startPos, endPos, fXMoveAnimCurve.Evaluate(timer)); yield return(null); } statSpriteObject.inUse = false; statSpriteObject.gameObject.SetActive(false); statSpriteObject.transform.parent = staticSpritePool.transform; }