//TracePlayerをアタッチ、初期設定
    private TracePlayer Get_Trace_Player()
    {
        TracePlayer _trace = GetComponent <TracePlayer>();

        if (_trace == null)
        {
            _trace       = gameObject.AddComponent <TracePlayer>();
            _trace.kind  = TracePlayer.Kind.onlyX;
            _trace.speed = 2.5f;
        }
        return(_trace);
    }
    private IEnumerator Dive_And_Jump_Shoot_Cor()
    {
        //取得
        BossCollisionDetection _collision = GetComponent <BossCollisionDetection>();
        TracePlayer            _trace     = GetComponent <TracePlayer>();

        //地面に潜る
        _controller.Change_Fly_Parameter();
        _move.Start_Move(0);
        yield return(new WaitUntil(_move.Is_End_Move));

        //当たり判定を消して自機を追いかける
        _collision.Become_Invincible();
        _trace.enabled = true;
        yield return(new WaitForSeconds(2.2f));

        _trace.enabled = false;

        yield return(new WaitForSeconds(0.8f));

        //ジャンプして弾幕発射
        _collision.Release_Invincible();
        _move.Start_Move(1);
        yield return(new WaitUntil(_move.Is_End_Move));

        _shoot.Shoot_Short_Curve_Laser();
        yield return(new WaitForSeconds(0.5f));

        //落下
        _controller.Change_Land_Parameter();
        yield return(new WaitUntil(foot_Collision.Hit_Trigger));

        yield return(new WaitForSeconds(0.8f));

        _attack.can_Attack = true;
    }
    private IEnumerator Attack_In_Melody_Intro_Cor()
    {
        Set_Can_Switch_Attack(false);

        //取得
        BossCollisionDetection _collision = GetComponent <BossCollisionDetection>();
        TracePlayer            _trace     = Get_Trace_Player();

        _trace.enabled = false;

        //地面に潜る
        _effect.Jump_And_Landing_Effect();
        _collision.Become_Invincible();
        _controller.Change_Fly_Parameter();
        _sprite.sortingOrder = -6;
        _se.Play("Dive");

        _move_Motion.Start_Move(0);
        yield return(new WaitUntil(_move_Motion.Is_End_Move));

        _controller.Change_Animation("DivingGroundBool");
        yield return(new WaitForSeconds(0.1f));

        _sprite.sortingOrder = 3;

        //コピーの生成
        if (_controller.Get_Now_Phase() == 2)
        {
            Vector2 position = new Vector2(-transform.position.x, transform.position.y);
            if (Mathf.Abs(transform.position.x) < 5f)
            {
                position = new Vector2(120f, transform.position.y);
            }
            _copy.Create_Copy(80, false, position);
        }

        //自機を追いかける
        _trace.enabled = true;
        yield return(new WaitForSeconds(2.09f));

        _trace.enabled = false;

        yield return(new WaitForSeconds(0.33f));

        //ジャンプ
        _collision.Release_Invincible();
        _controller.Change_Animation("HighJumpBool");
        _move_Motion.Start_Move(1);
        _effect.Play_A_Letter_Effect();
        _effect.Play_Burst_Effect_Red();
        UsualSoundManager.Instance.Play_Attack_Sound();
        yield return(new WaitForSeconds(1.03f));

        //レーザー
        _controller.Change_Animation("ShootPoseBool");
        _effect.Play_Unn_Letter_Effect();
        _effect.Play_Burst_Effect_Red();
        _shoot.Shoot_Short_Curve_Laser(0.33f);
        if (_copy.gameObject.activeSelf)
        {
            _copy_Shoot.Shoot_Short_Curve_Laser(0.33f);
        }
        yield return(new WaitForSeconds(1.65f));

        //落下
        _controller.Change_Land_Parameter();
        yield return(new WaitUntil(foot_Collider.Hit_Trigger));

        _effect.Jump_And_Landing_Effect();
        _controller.Change_Animation("SquatBool");

        //コピーの消去
        if (_copy.gameObject.activeSelf)
        {
            _copy.Delete_Copy();
        }

        yield return(new WaitForSeconds(1.65f));

        //次の攻撃へ
        Set_Can_Switch_Attack(true);
        Restart_Attack();
    }