コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }