LoginSignup
1
0

More than 1 year has passed since last update.

【完走目指す】初心者が25日で強くなる Advent Calendar 2022
23日目です。見た目はコッホ曲線だけど、厳密にはコッホ曲線じゃない気がしたので”ほぼ”コッホ曲線です。

前回

スクリーンショット_20221223_020238.png
1つの線分の長さが、元の線分の長さの1/9のコッホ曲線を作りました。が、これ以上小さくできなくなってました。

最初に

忘れられていましたが、一番最初の線分が先に表示されるようにします。

public GameObject Senbun1;
public bool StartChk;

これを追加します。初めの直線です。
次にStartの部分に

Kohho2.SetActive(false);

これで、一回動作した後の三角形もどき一個が付いた線分は隠されました。
そして、Updateに

 if (StartChk == true)
        {
            Kohho3[0] = Instantiate(Kohho2, kh[0].transform.position, kh[0].transform.rotation);

            Kohho3[1] = Instantiate(Kohho2, kh[1].transform.position, kh[1].transform.rotation);
            Kohho3[2] = Instantiate(Kohho2, kh[2].transform.position, kh[2].transform.rotation);
            Kohho3[3] = Instantiate(Kohho2, kh[3].transform.position, kh[3].transform.rotation);
            Kohho3[0].transform.localScale = new Vector3(Kohho2.transform.localScale.x * 0.333f, Kohho2.transform.localScale.y * 0.333f, 0);
            Kohho3[1].transform.localScale = new Vector3(Kohho2.transform.localScale.x * 0.333f, Kohho2.transform.localScale.y * 0.333f, 0);
            Kohho3[2].transform.localScale = new Vector3(Kohho2.transform.localScale.x * 0.333f, Kohho2.transform.localScale.y * 0.333f, 0);
            Kohho3[3].transform.localScale = new Vector3(Kohho2.transform.localScale.x * 0.333f, Kohho2.transform.localScale.y * 0.333f, 0);
            Destroy(kohho.gameObject);

        }
        else
        {
            Kohho2.SetActive(true);
            Destroy(Senbun1);
            StartChk = true;        }
    }

if文が追加されました。
最初は
image.png
これ
ボタンを押すと
image.png
こうなる
そして
image.png
こうなった。

ボタンを押すたびに細かくなる

ボタンをn回押すたびにに4のn乗大きくなるようです

その後

いろいろやってたら土曜日になってしまったので、とりあえずここまでできたものを載せます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BtnPush : MonoBehaviour
{
    public int V;
    public int n;
    public GameObject[] kh ;
    public GameObject[] Kohho2;
        
        public GameObject[] Kohho3;
    public GameObject kohho;
    public bool Ugoki;
    
    public bool StartChk;
    public GameObject Senbun1;
    public int DA;
    public int AU;
    public int i;
    public int JA;
    public int AMZ;
    public int RU;
    public int DN;

    // Start is called before the first frame update
    void Start()
    {
   
        
    }

    // Update is called once per frame
    void Update()
    { 

    }
    public void Onclick()
    {
        //kh.Length = Mathf.Pow(4, n + 1);
   
  //  Kohho3[V] = kohho;
        V = 0;
        // Debug.Log(Mathf.Pow(4, n ));

       
        int ObjCount = Kohho3[0].transform.childCount;
        if (ObjCount == 0)
        {

            Kohho3[V] = Instantiate(kohho, kh[V].transform.position, kh[V].transform.rotation);
            Kohho3[V].transform.localScale = new Vector3(Mathf.Pow(0.333f, n), Mathf.Pow(0.333f, n), 0);
            Destroy(Senbun1);
            Kohho2[V] = Kohho3[V];

        }
        else
        {
          
                


             
              
                for (; AU < Mathf.Pow(4,n-1); AU++)
            {if (Kohho2[DN].transform.childCount == 0)
                { }
                else
                {

                
                for (; JA < 4; JA++)
                {
                    Debug.Log(i);
                    //Debug.Log(AMZ);

                    kh[JA] = Kohho2[DN].transform.GetChild(JA).gameObject;//khに線分移動
                                                                          //  Debug.Log(i);
                }
                JA = 0;
               
                //  Debug.Log(AU);
                Kohho3[0] = Instantiate(kohho, kh[0].transform.position, kh[0].transform.rotation);
                    Kohho3[0].transform.localScale = new Vector3(Mathf.Pow(0.33f, n), Mathf.Pow(0.33f, n), 0);
                    Kohho3[1] = Instantiate(kohho, kh[1].transform.position, kh[1].transform.rotation);
                    Kohho3[1].transform.localScale = new Vector3(Mathf.Pow(0.33f, n), Mathf.Pow(0.33f, n), 0);
                    Kohho3[2] = Instantiate(kohho, kh[2].transform.position, kh[2].transform.rotation);
                    Kohho3[2].transform.localScale = new Vector3(Mathf.Pow(0.33f, n), Mathf.Pow(0.33f, n), 0);
                    Kohho3[3] = Instantiate(kohho, kh[3].transform.position, kh[3].transform.rotation);
                    Kohho3[3].transform.localScale = new Vector3(Mathf.Pow(0.33f, n), Mathf.Pow(0.33f, n), 0);
                    Kohho2[DA] = Kohho3[0];
                    Kohho2[DA + 1] = Kohho3[1];
                    Kohho2[DA+2] = Kohho3[2];
                    Kohho2[DA + 3] = Kohho3[3];

                Destroy(kh[DN].transform.root.gameObject);
                    Debug.Log(i);
              
                DN = DN + 1;
                AMZ = AMZ + 1;

                    if (AMZ == 4)

                    {
                        AMZ = 0;
                    }
                    V = V + 1;


               }
                
               
            }
              
              
            if (V == 4)
               
            {
                    V = 0;
             
            }
               
                DA = DA + 4;
            
               
                }
            JA = 0;
         //   }

        DN = 0;

        AU = 0;

        i = 0;
        n = n + 1;
    }
}

最終的に、
image.png
この大きさまでしか作れませんでした。
3日かかってしまったので、ここで止めておきたいと思います

まとめ

作り方を間違えなければ、Unityでもコッホ曲線を作れます。自分は何かしらミスってうまくできませんでした

いつかやり直します。

23日目 終わり

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0