Ejemplo n.º 1
0
        /// <summary>
        /// First animation sequence, appearing and getting distance from source position
        /// </summary>
        /// <param name="_itemAnimationData"></param>
        /// <param name="_items"></param>
        /// <param name="_delay"></param>
        /// <returns></returns>
        private IEnumerator StartAppearing(ItemAnimation _itemAnimationData, List <ItemParticlesAnimation> _items, float _delay = 0.0f)
        {
            yield return(new WaitForSeconds(_delay));

            for (int i = 0; i < _items.Count; i++)
            {
                if (i == 0)
                {
                    Disc disc = _itemAnimationData.animationData.disc;
                    _items[i].SetAppearingToPosition(_items[i].transform.position + (Vector3)Random.insideUnitCircle *
                                                     (Random.Range(disc.radiusMin * disc.radiusFactor, disc.radiusMax * disc.radiusFactor)));
                }
                else
                {
                    _items[i].SetAppearingToPosition(DispersionAroundCircle(_items[i].transform.position, _items[0].GetToPosition(), _items.Count, _itemAnimationData.animationData));
                }

                _items[i].StartAppearing();
            }


            yield return(new WaitForSeconds(_itemAnimationData.animationData.delayAppearing));

            StartCoroutine(StartGrouping(_itemAnimationData, _items));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Second phase of animation, grouping toward destination
        /// </summary>
        /// <param name="_itemAnimationData"></param>
        /// <param name="_items"></param>
        /// <returns></returns>
        private IEnumerator StartGrouping(ItemAnimation _itemAnimationData, List <ItemParticlesAnimation> _items)
        {
            yield return(new WaitForSeconds(_itemAnimationData.animationData.delayAfterAppear));

            for (int i = 0; i < _items.Count; i++)
            {
                if (_itemAnimationData.animationData.allTogether == false)
                {
                    yield return(new WaitForSeconds(_itemAnimationData.animationData.delayBetweenRewards));
                }
                _items[i].StartGrouping(_itemAnimationData.destination);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Call this to start a new Generic Reward Animation
        /// </summary>
        /// <param name="_animationElement"></param>
        /// <param name="_quantity"></param>
        /// <param name="_origin"></param>
        /// <param name="_destination"></param>
        /// <param name="_delay"></param>
        public Guid NewGenericRewardAnimation(Item _item, ItemAnimationData _itemAnimationScriptable, int _quantity, Vector3 _origin, Vector3 _destination, float _delay = 0)
        {
            if (_quantity <= 0)
            {
                return(Guid.Empty);
            }

            ItemAnimation itemAnimationData = new ItemAnimation()
            {
                guid          = Guid.NewGuid(),
                itemId        = _item.id,
                sprite        = _item.icon,
                color         = _item.color,
                animationData = _itemAnimationScriptable,
                quantity      = _quantity,
                destination   = _destination,
                compt         = _quantity
            };

            List <ItemParticlesAnimation> items = new List <ItemParticlesAnimation>();

            ItemParticlesAnimation particle;

            for (int i = 0; i < _quantity; i++)
            {
                particle = GetUnusedOrCreate();
                particle.transform.position   = _origin;
                particle.transform.localScale = Vector3.zero;
                particle.itemAnimationData    = itemAnimationData;
                particle.SetUp();
                particle.gameObject.SetActive(true);
                items.Add(particle);
            }

            StartCoroutine(StartAppearing(itemAnimationData, items));

            return(itemAnimationData.guid);
        }