ガチの初心者がUnityでマイクラ作る開発記録
マインクラフトを作りたい
大好きなマインクラフトを作りたい。
筆者の実力
- C#何もわからず
- Unityなどのエンジンわからず
- 3Dレンダリングの仕組みわからず
開発環境
- M1Mac
- SSD:256GB
- Unity
なぜUnityを選んだか
- OpenGLで作ろうとしたが挫折
- Three.jsで作ろうとしたが挫折
- UnrealEngineで作ろうとしたが挫折
理由
- 情報が少ない
- 3Dレンダリングの仕組み(ローエンド)がわからない
比較的情報が多く扱いやすいUnityで作ってみることにした。そして、今は何もわからない、メッシュやらUVなどについて調べていく。
Vertex
ListとかそもそもC#について知らないけど、頂点座標を格納する的なイメージかな。
Vector
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
ポリゴンに貼り付けた方が軽いらしい
error CS8803: Top-level statements must precede namespace and type declarations.
とかいうエラーが出るので困惑していたが、普通にクラスの外に関数やら変数を定義してた…。かっこを見失うとまずい。
そうやって考えると、普段使っているPythonはインデントでわかりやすいかも。
ジオメトリとかよくわからないな。
CreateSerializedAsset is not supported while importing out-of-process
とかいう謎のエラーが出たが、意味不。
三重ループの一番上の{}を外したら治った。
メッシュについて勉強中。
from y inの仕組みはどうなってるのだろうか。メッシュを描画
色々頑張って、頂点座標などの情報からメッシュを作成。裏は描画されないようにもできた。素晴らしい。あとはこれをどうやって四角にするのか。
立方体を作れるように、プログラムをリファクタリングし、それぞれの面を作成できるようにした
さっきのコードを改良し、頂点座標を変えて、表向きではなく、裏向きのメッシュを作成できた。さっきは青の矢印からだとみれたが、今回は逆向きからでないとみれないようになったので成功。やっていることは単純で、swichでfrontとbackの処理を分けている。
[System.Serializable]の意味が少しわかったかも。
メッシュのテストをしやすくするためにドロップダウンを追加してみた。
立方体のテスト
うまくいった。
ブロックを移動できるようにしてみた。