Пример #1
0
    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);
            }
        });
    }
Пример #2
0
        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);
                }
            });
        }