Esempio n. 1
0
    /// <summary>
    /// 輪を作成する
    /// </summary>
    private void Create_Ellipse()
    {
        //データにアクセス
        m_data = GetComponent <Mobius_data>();

        //配列を確保
        m_ellipse  = new GameObject[(int)m_data.tempo * 2];
        m_spren    = new SpriteRenderer[(int)m_data.tempo * 2];
        m_uibutton = new GameObject[3];

        //UIを生成
        ellipsemother = new GameObject("Ellipsemother");
        for (int s = 1; s < (int)m_data.tempo * 2 - 1; ++s)
        {
            m_ellipse[s] = Instantiate(UIobject_middle);
            m_spren[s]   = m_ellipse[s].GetComponent <SpriteRenderer>();
            m_ellipse[s].transform.position = new Vector3(-m_data.Pixcellforunitysize_x * ((int)m_data.tempo - 2) + m_data.Pixcellforunitysize_x * 2 * ((s - 1) / 2) + m_data.Position.x, m_data.Position.y, 0);
            if (s % 2 == 1)
            {
                m_ellipse[s].transform.localScale = new Vector3(1, -1, 1);
                m_spren[s].sortingOrder           = 1;
            }
            else
            {
                m_spren[s].sortingOrder = 4;
            }
            m_ellipse[s].transform.parent = ellipsemother.transform;
        }
        m_ellipse[0] = Instantiate(UIobject_side);
        m_ellipse[0].transform.position = new Vector3(-m_data.UIscalex / 2 - m_data.Position.x + m_data.Pixcellforunitysize_x / 2, m_data.Position.y, 0);
        m_ellipse[0].transform.parent   = ellipsemother.transform;
        m_ellipse[m_ellipse.Length - 1] = Instantiate(UIobject_side);
        m_ellipse[m_ellipse.Length - 1].transform.position   = new Vector3(-m_data.UIscalex / 2 - m_data.Position.x + m_data.Pixcellforunitysize_x / 2 + (m_data.Pixcellforunitysize_x * ((int)m_data.tempo * 2 - 1)), m_data.Position.y, 0);
        m_ellipse[m_ellipse.Length - 1].transform.localScale = new Vector3(-1, 1, 1);
        m_ellipse[m_ellipse.Length - 1].transform.parent     = ellipsemother.transform;

        //ボタンを生成
        for (int s = 0; s < (int)m_data.tempo - 1; ++s)
        {
            m_uibutton[s] = Instantiate(UIbutton[s]);
            m_uibutton[s].transform.position = new Vector3(-m_data.UIscalex / 2 - m_data.Position.x + m_data.Pixcellforunitysize_x * 2 * (s + 1), m_data.Position.y, 0);
        }

        //UI上を移動するオブジェクトを生成
        m_wisp = Instantiate(UIobject_wisp);
        m_wisp.transform.position = new Vector3(m_data.Position.x - m_data.UIscalex / 2, m_data.Position.y, 0);
        m_wispspr = m_wisp.GetComponent <SpriteRenderer>();

        //プレイヤーを参照する
        player = GetComponent <Player_con>();
    }
Esempio n. 2
0
    /// <summary>
    /// 輪を作成する
    /// </summary>
    private void Create_Strip()
    {
        //ステージのフレーム数を確定
        MaxStageFrame = (int)(60 * StageTime);

        //UIを生成する位置
        m_position = transform.position;

        //もし半周にかかる時間が1秒未満に設定されていた場合1秒に変える
        if (Herftime < 1)
        {
            Herftime = 1;
        }

        //半周でかかるフレーム数
        EllipseHerfFrame = (int)(Herftime * 60) + 1;

        //適切でない秒数の場合それ以降の処理をはじく
        if ((EllipseHerfFrame - 1) % (int)m_tempo != 0)
        {
            Debug.Log("指定された秒数が適切ではありません");
            return;
        }

        //配列を確保
        m_moveposx     = new float[EllipseHerfFrame];
        m_moveposy     = new float[EllipseHerfFrame];
        ellipsemother  = new GameObject("strip");
        m_ellipse      = new GameObject[(int)m_tempo * 2];
        m_spren        = new SpriteRenderer[(int)m_tempo * 2];
        m_ellipsemodes = new EllipseMode[(int)m_tempo * 2];
        m_uibutton     = new GameObject[(int)m_tempo - 1];
        m_movelist     = new int[MaxStageFrame];
        m_ops          = new int[MaxStageFrame];

        //全体の大きさを確定
        float scalex = 2.4f * (int)m_tempo;
        float sx     = scalex / 2f - m_position.x;

        //UIを生成
        for (int s = 1; s < (int)m_tempo * 2 - 1; ++s)
        {
            m_ellipse[s] = Instantiate(UIobject_middle);
            m_ellipse[s].transform.position = new Vector3(-sx + 0.6f + (1.2f * s), m_position.y, 0);
            if (s % 2 == 1)
            {
                m_ellipse[s].transform.localScale = new Vector3(-1, 1, 1);
            }
            m_ellipse[s].transform.parent = ellipsemother.transform;
            m_spren[s] = m_ellipse[s].GetComponent <SpriteRenderer>();
        }
        m_ellipse[0] = Instantiate(UIobject_side);
        m_ellipse[0].transform.position = new Vector3(-sx + 0.6f, m_position.y, 0);
        m_ellipse[0].transform.parent   = ellipsemother.transform;
        m_ellipse[m_ellipse.Length - 1] = Instantiate(UIobject_side);
        m_ellipse[m_ellipse.Length - 1].transform.position   = new Vector3(-sx + 0.6f + (1.2f * ((int)m_tempo * 2 - 1)), m_position.y, 0);
        m_ellipse[m_ellipse.Length - 1].transform.localScale = new Vector3(-1, 1, 1);
        m_ellipse[m_ellipse.Length - 1].transform.parent     = ellipsemother.transform;
        for (int s = 0; s < (int)m_tempo - 1; ++s)
        {
            m_uibutton[s] = Instantiate(UIbutton[s]);
            m_uibutton[s].transform.position = new Vector3(-sx + 2.4f * (s + 1), m_position.y, 0);
        }

        //1/4楕円にかかるフレーム数を確定
        herfellipsesize = (EllipseHerfFrame - 1) / (int)m_tempo;

        //移動する位置を確定
        for (int s = 0; s < (int)m_tempo; ++s)
        {
            float fp = -sx + scalex / (int)m_tempo * s;
            for (int i = 0; i <= herfellipsesize; ++i)
            {
                m_moveposx[s * herfellipsesize + i] = fp + 2.4f / herfellipsesize * i;
                m_moveposy[s * herfellipsesize + i] = Mathf.Sqrt((1 - Mathf.Pow(-1.2f + 2.4f / herfellipsesize * i, 2) / Mathf.Pow(pixcellforunitysize_x, 2)) * Mathf.Pow(pixcellforunitysize_y, 2));
            }
            m_moveposy[s * herfellipsesize] = 0;
        }
        m_moveposx[EllipseHerfFrame - 1] = -sx + (1.2f * (int)m_tempo * 2);
        m_moveposy[EllipseHerfFrame - 1] = 0;

        //UIの状態を設定
        m_ellipsemodes[0] = EllipseMode.Cross;
        m_ellipsemodes[m_ellipsemodes.Length - 1] = EllipseMode.Cross;

        //UI上を移動するオブジェクトを生成
        m_wisp = Instantiate(UIobject_wisp);
        m_wisp.transform.position = new Vector3(m_moveposx[0], m_moveposy[0], 0);

        //プレイヤーを参照する
        player = GetComponent <Player_con>();
    }