private void Teleport(Vector2 pos, float speed) { IEnumerator tp() { _bc.enabled = false; _anim.Play("Retreat Start"); Deceleration dec = gameObject.AddComponent <Deceleration>(); dec.deceleration = 0.85f; yield return(new WaitWhile(() => _anim.IsPlaying("Retreat Start"))); Destroy(dec); _rb.velocity = Vector2.zero; MoveToPos mp = gameObject.AddComponent <MoveToPos>(); mp.pos = pos; mp.speed = speed; ParticleSystem.EmissionModule em = _shadePartic.emission; em.enabled = false; ParticleSystem.EmissionModule em2 = _retPartic.emission; em2.enabled = true; yield return(new WaitWhile(() => mp != null)); _anim.Play("Retreat End"); em.enabled = true; em2.enabled = false; yield return(new WaitWhile(() => _anim.IsPlaying("Retreat End"))); _anim.Play("Fly"); _bc.enabled = true; _attacking = false; } StartCoroutine(tp()); }
private void Shriek() { IEnumerator DoShriek() { Deceleration dec = gameObject.AddComponent <Deceleration>(); dec.deceleration = 0.85f; _anim.Play("Scream Antic"); ParticleSystem.EmissionModule em = _shadePartic.emission; em.rate = 0; ParticleSystem.EmissionModule em2 = _chargePartic.emission; em2.rate = 50; yield return(new WaitForSeconds(0.2f)); Destroy(dec); _rb.velocity = Vector2.zero; _anim.Play("Scream"); _screamBlst.SetActive(true); _screamHit.SetActive(true); em2.rate = 0; GameCameras.instance.cameraShakeFSM.SendEvent("AverageShake"); yield return(new WaitForSeconds(0.5f)); em.rate = 20; _anim.Play("Scream End"); yield return(new WaitWhile((() => _anim.IsPlaying("Scream End")))); _anim.Play("Fly"); StartCoroutine(AttackChooser()); } _mana--; StartCoroutine(DoShriek()); }