LoginSignup
9
3

More than 5 years have passed since last update.

自動で地面を生成してみた

Posted at

やること

地面を一つ一つ追加しているときりがないので自動で生成できるようにする。
備忘録兼初心者の方の少しでも役に立てたらと書いてます。

Prefab化

自動生成するためにオブジェクトをPrefab化。
大きさなど同じ形で何回も使いたいオブジェクトがあった場合はHierarchyからProjectへドラッグ&ドロップすることでそのオブジェクトをPrefab化できます。
Prefab化したオブジェクトはHierarchyに青色で表示されます。

余談ですが。
この時Project内にPrefabファイルを作ってそこにドラッグ&ドロップすることでPrefab化したオブジェクトをまとめることができます。

自動生成コードを書く

自動生成するためのコード

StageGenerator.cs
[SerializeField]
GameObject earthPrefab; //地面

[SerializeField]
float x = 0;

void Start()
{
   StartCoroutine("Generator");
}

IEnumerator Generator
{
   while (true)
   {
     Instantiate(earthPrefab, new Vector3(0.2f + x, -4.6f, 0), Quaternion.identity);
     yield return new WaitForSeconds(.1f);
     x = x + 4.6f;
   }
}

これで上手くいく!と思っていたけど、どうも少し被るところがある模様。
そして被った箇所は少し盛り上がってしまう。
もっと数値を細かく設定する必要がある。

まとめ

キャラクターが走り去ったあとの地面が残り続けてしまうため、走り去ったあとは地面を消すことも今後していきたい。
このコードを応用すれば地面を上下に作ったり、少し離れて作ったりできそうなので色々試してみたい。

9
3
1

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
9
3