【完走目指す】初心者が25日で強くなる Advent Calendar 2022
23日目です。見た目はコッホ曲線だけど、厳密にはコッホ曲線じゃない気がしたので”ほぼ”コッホ曲線です。
前回
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文が追加されました。
最初は
これ
ボタンを押すと
こうなる
そして
こうなった。
ボタンを押すたびに細かくなる
ボタンを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;
}
}
最終的に、
この大きさまでしか作れませんでした。
3日かかってしまったので、ここで止めておきたいと思います
まとめ
作り方を間違えなければ、Unityでもコッホ曲線を作れます。自分は何かしらミスってうまくできませんでした
いつかやり直します。
23日目 終わり