// デモ発射関数
    public void ShotBullets_Demo(bool prim)
    {
        if (shotCT <= 0)
        {
            // 共通ショット
            Vector3[] shotPos = new Vector3[2];
            shotPos[0] = this.transform.position + new Vector3(0.4f, 0, 0);
            shotPos[1] = this.transform.position + new Vector3(-0.4f, 0, 0);
            for (int i = 0; i < 2; i++)
            {
                GameObject    bullet = Instantiate(bulletObj, shotPos[i], Quaternion.identity);
                PlayerBullets pb     = bullet.GetComponent <PlayerBullets>();
                pb.SetSpeed(param.defaultShot_speed);
            }

            if (prim)
            {
                TypeShot(shotType_Primary, !prim);
            }
            else
            {
                TypeShot(shotType_Secondary, !prim);
            }

            shotCT = param.shotInterval;
        }
        else
        {
            shotCT -= Time.deltaTime;
        }
    }
    // 弾発射関数
    void ShotBullets()
    {
        if (shotCT <= 0)
        {
            if (ControllSetting.GetKey("Shot"))
            {
                audio.PlayOneShot(AudioManager.Instance.se_shot);
                // 共通ショット
                Vector3[] shotPos = new Vector3[2];
                shotPos[0] = this.transform.position + new Vector3(0.4f, 0, 0);
                shotPos[1] = this.transform.position + new Vector3(-0.4f, 0, 0);
                for (int i = 0; i < 2; i++)
                {
                    GameObject    bullet = Instantiate(bulletObj, shotPos[i], Quaternion.identity);
                    PlayerBullets pb     = bullet.GetComponent <PlayerBullets>();
                    pb.SetSpeed(param.defaultShot_speed);
                }

                if (!slowMove)
                {
                    TypeShot(shotType_Primary, slowMove);
                }
                else
                {
                    TypeShot(shotType_Secondary, slowMove);
                }

                shotCT = param.shotInterval;
            }
        }
        else
        {
            shotCT -= Time.deltaTime;
        }
    }
    // タイプ別ショット
    private void TypeShot(ShotType type, bool slow)
    {
        switch (type)
        {
        case ShotType.FourWay:
            if (!slow)
            {
                NWayShot(4, 0.0f, param.fourWay_betweenAngle, param.fourWay_speed);
            }
            else
            {
                NWayShot(4, 0.0f, param.fourWay_betweenAngle_slow, param.fourWay_speed);
            }
            break;

        case ShotType.Homing:
            for (int i = 0; i < 4; i++)
            {
                if (!slow)
                {
                    Instantiate(homingObj, this.transform.position, Quaternion.Euler(0.0f, 0.0f, (i - 2) * 30.0f - 180.0f + 15.0f));
                }
                else
                {
                    Instantiate(homingObj, this.transform.position, Quaternion.Euler(0.0f, 0.0f, (i - 2) * 20.0f - 180.0f + 10.0f));
                }
            }
            break;

        case ShotType.Spread:
            for (int i = 0; i < 4; i++)
            {
                float a;
                if (!slow)
                {
                    a = param.spread_betweenAngle;
                }
                else
                {
                    a = param.spread_betweenAngle_slow;
                }
                float         zAngle = (i - 2) * a + (a / 2.0f) + Random.Range(-(a / 2.0f), (a / 2.0f));
                GameObject    bullet = Instantiate(bulletObj_s, this.transform.position, Quaternion.Euler(0.0f, 0.0f, zAngle));
                PlayerBullets pb     = bullet.GetComponent <PlayerBullets>();
                pb.SetSpeed(Random.Range(param.spread_minSpeed, param.spread_maxSpeed));
            }
            break;
        }
    }
    // N Way ショット
    private void NWayShot(int num, float baseAngle, float betweenAngle, float speed)
    {
        for (int i = 0; i < num; i++)
        {
            float zAngle = (i * betweenAngle) + baseAngle - ((num / 2) * betweenAngle);
            if (num % 2 == 0)
            {
                zAngle += betweenAngle / 2.0f;
            }

            Quaternion    quat   = Quaternion.Euler(0.0f, 0.0f, zAngle);
            GameObject    bullet = Instantiate(bulletObj, this.transform.position, quat);
            PlayerBullets pb     = bullet.GetComponent <PlayerBullets>();
            pb.SetSpeed(speed);
        }
    }