Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private IEnumerator Panic()
        {
            var currentVelocity = Vector2.zero;

            while (true)
            {
                var axis = Random.Range(0, 2) == 1;

                Vector2 velocity;
                do
                {
                    velocity = new Vector2(!axis ? MathExtensions.RandOne() : 0.0f, axis ? MathExtensions.RandOne() : 0.0f);
                } while (velocity == currentVelocity);

                currentVelocity = velocity;
                character.SetOrientations(velocity, velocity);

                character.body.velocity = velocity * character.statsDescriptor.speed;

                yield return(new WaitForSeconds(Random.Range(0.3f, 0.6f)));
            }
        }
Пример #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="minDistance"></param>
 /// <param name="maxDistance"></param>
 /// <param name="callback"></param>
 public void DoRandomJumpAnim(float minDistance, float maxDistance, System.Action callback = null)
 {
     doFloatingAnimAtStart = false;
     System.Func <float> nextRandom = () =>
     {
         var range = Random.Range(minDistance, maxDistance);
         return(Random.Range(0, 2) == 0 ? range : range * -1.0f);
     };
     DoJumpAnim(transform.position + new Vector3(nextRandom() * MathExtensions.RandOne(), nextRandom() * MathExtensions.RandOne()), () =>
     {
         DoFloatingAnim();
         callback?.Invoke();
     });
 }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        private void Unpin()
        {
            if (_isPinned)
            {
                _isPinned         = false;
                _grenadeBehaviour = gameObject.AddComponent <GrenadeBehaviour>();
                _grenadeBehaviour.explosionDelay     = _explosionDelay;
                _grenadeBehaviour.radius             = _radius;
                _grenadeBehaviour.knockback          = _knockback;
                _grenadeBehaviour.damages            = _damages;
                _grenadeBehaviour.offSprite          = _offSprite;
                _grenadeBehaviour.onSprite           = _onSprite;
                _grenadeBehaviour.explosionAnimation = _explosionAnimation;
                _grenadeBehaviour.explosionFrequency = _explosionFrequency;
                _grenadeBehaviour.explosionDistance  = _explosionDistance;
                _grenadeBehaviour.explosionShake     = _explosionShake;
                _grenadeBehaviour.equippable         = this;

                var pinObject   = GameObject.Instantiate(Bootstrap.instance.data.emptyTileSpritePrefab, transform.position, Quaternion.identity);
                var pinRenderer = pinObject.GetComponent <SpriteRenderer>();
                pinRenderer.sprite = _pinSprite;

                pinObject.transform.DOJump(pinObject.transform.position + Vector3.right * 20.0f * MathExtensions.RandOne(),
                                           15.0f, Random.Range(2, 4), 0.4f, true)
                .onComplete += (() =>
                {
                    IEnumerator disappear()
                    {
                        yield return(new WaitForSeconds(2.0f));

                        pinRenderer.DOFade(0.0f, 0.2f)
                        .onComplete += (() =>
                        {
                            Destroy(pinObject);
                        });
                    };
                    pinRenderer.GetComponent <MonoBehaviour>().StartCoroutine(disappear());
                });
            }
        }