Open12

ガチの初心者がUnityでマイクラ作る開発記録

手羽先手羽先

マインクラフトを作りたい

大好きなマインクラフトを作りたい。

筆者の実力

  • C#何もわからず
  • Unityなどのエンジンわからず
  • 3Dレンダリングの仕組みわからず

開発環境

  • M1Mac
  • SSD:256GB
  • Unity

なぜUnityを選んだか

  • OpenGLで作ろうとしたが挫折
  • Three.jsで作ろうとしたが挫折
  • UnrealEngineで作ろうとしたが挫折

理由

  • 情報が少ない
  • 3Dレンダリングの仕組み(ローエンド)がわからない

比較的情報が多く扱いやすいUnityで作ってみることにした。そして、今は何もわからない、メッシュやらUVなどについて調べていく。

手羽先手羽先

Vertex

http://tsumikiseisaku.com/blog/shader-tutorial-vfshader/
ListとかそもそもC#について知らないけど、頂点座標を格納する的なイメージかな。

Vector

https://ekulabo.com/whats-vector3
Vector2は二次元、Vector3は三次元のベクトル的なイメージかな?
float型の値を2,3個持っているらしい。x,y,zに対応していそう。

UV

https://blog.applibot.co.jp/2017/08/21/tutorial-for-unity-3d-3/#:~:text=uv座標とは、テクスチャ,0.5%2C 0.5)%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82

https://tsuwabuki.hatenablog.com/entry/2013/12/14/111252
ポリゴンに貼り付けた方が軽いらしい
https://shibuya24.info/entry/unity-mesh-dynamic-apply-texture

手羽先手羽先

error CS8803: Top-level statements must precede namespace and type declarations.
とかいうエラーが出るので困惑していたが、普通にクラスの外に関数やら変数を定義してた…。かっこを見失うとまずい。
そうやって考えると、普段使っているPythonはインデントでわかりやすいかも。

手羽先手羽先


CreateSerializedAsset is not supported while importing out-of-process
とかいう謎のエラーが出たが、意味不。
三重ループの一番上の{}を外したら治った。

手羽先手羽先

メッシュを描画

色々頑張って、頂点座標などの情報からメッシュを作成。裏は描画されないようにもできた。素晴らしい。あとはこれをどうやって四角にするのか。

手羽先手羽先

立方体を作れるように、プログラムをリファクタリングし、それぞれの面を作成できるようにした

さっきのコードを改良し、頂点座標を変えて、表向きではなく、裏向きのメッシュを作成できた。さっきは青の矢印からだとみれたが、今回は逆向きからでないとみれないようになったので成功。やっていることは単純で、swichでfrontとbackの処理を分けている。

手羽先手羽先

メッシュのテストをしやすくするためにドロップダウンを追加してみた。