public void CreateTask() { GameObject go = CreateSprite(UtilityClass.GetMouseWorldPos()); SpriteRenderer spriteRenderer = go.GetComponent <SpriteRenderer>(); float cleanUpTime = Time.time + 5f; taskSystem.EnqueueTask(() => { if (Time.time >= cleanUpTime) { Task task = new Task.ShellFloorCleanUp { targetPosition = go.transform.position, cleanUpAction = () => { float alpha = 1f; FunctionUpdater.Create(() => { alpha -= Time.deltaTime; spriteRenderer.color = new Color(1, 1, 1, alpha); if (alpha <= 0f) { Destroy(go); return(true); } else { return(false); } }); } }; //taskSystem.AddTask(task); return(task); } else { return(null); } }); }
private void SpawnFloorShellsWithTask(Vector3 position) { GameObject floorShellsGameObject = SpawnFloorShells(position); SpriteRenderer floorShellsSpriteRenderer = floorShellsGameObject.GetComponent <SpriteRenderer>(); float cleanUpTime = Time.time + 5f; taskSystem.EnqueueTask(() => { if (Time.time >= cleanUpTime) { Task task = new Task.ShellFloorCleanUp { targetPosition = floorShellsGameObject.transform.position, cleanUpAction = () => { // Clean Up Action, reduce alpha every frame until zero float alpha = 1f; FunctionUpdater.Create(() => { alpha -= Time.deltaTime; floorShellsSpriteRenderer.color = new Color(1, 1, 1, alpha); if (alpha <= 0f) { return(true); } else { return(false); } }); } }; return(task); } else { return(null); } }); }