/// <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))); } }
/// <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(); }); }
/// <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()); }); } }