Example #1
0
    public static void ScreenAnimation(GameObject prefab, Vector3 sourcePosition, GameObject target, Canvas canvas, float duration = 1f, int quantity = 1, float scale = 1f, float spread = 50f, Action callback = null)
    {
        var config = new ScriptedAnimationConfig();

        config.SetPrefab(prefab).SetSourcePosition(sourcePosition).SetTarget(target).SetDuration(duration).SetQuantity(quantity).SetScale(scale).SetSpread(spread).AddCallback(callback);
        CreateGenericPrize(config, canvas);
    }
Example #2
0
    public void StartAnimation(ScriptedAnimationConfig config, int currentQuantity)
    {
        this.config = config;
        callback    = config.callback;
        target      = config.target.gameObject;
        duration    = config.duration * Random.Range(0.75f, 1.25f);
        gameObject.transform.position = config.sourcePosition - new Vector3(Random.Range(-config.spread, config.spread), Random.Range(-config.spread, config.spread));
        var offset       = (currentQuantity % 10) / 10f * (duration / 2f);
        var timeOffset   = duration / 2f + offset;
        var randomValueX = Random.Range(-config.spread, config.spread);
        var randomValueY = Random.Range(-config.spread, config.spread);

        midPoint = new Vector3(transform.position.x + randomValueX, transform.position.y + randomValueY, transform.position.z);
        iTween.MoveTo(gameObject, iTween.Hash("position", midPoint,
                                              "time", timeOffset, "easeType", iTween.EaseType.easeOutQuart));
        iTween.ScaleTo(gameObject, iTween.Hash("scale", Vector3.one * config.scale,
                                               "time", timeOffset, "easeType", iTween.EaseType.easeOutQuart, "OnComplete", "NextAnimation"));
        //NextAnimation();
    }
Example #3
0
    public static void CreateGenericPrize(ScriptedAnimationConfig config, Canvas canvas)
    {
        if (config.quantity == 0 || config.sourcePosition == null)
        {
            config.callback();
            return;
        }
        var total = config.quantity;
        ///A cada ficha, desconta da quantidade de fichas criadas,
        ///ao terminar de animar todas as fichas chama o callback
        var configCallback = config.callback;

        canvas.sortingLayerName = config.layerName;
        canvas.sortingOrder     = config.orderId;
        for (var i = 0; i < config.quantity; i++)
        {
            var prizeGO = Instantiate(config.prefab);
            prizeGO.transform.SetParent(canvas.transform);
            prizeGO.transform.position   = config.sourcePosition;
            prizeGO.transform.localScale = config.scale * Vector3.one;
            var coinAnimation = prizeGO.GetComponent <ScriptedAnimationController>();
            if (!coinAnimation)
            {
                coinAnimation = prizeGO.AddComponent <ScriptedAnimationController>();
            }

            config.callback = () =>
            {
                if (--total == 0)
                {
                    configCallback?.Invoke();
                }
            };

            coinAnimation.StartAnimation(config, i);
        }
    }