Unityで3Dテトリス

まだ触ったことのない技術に触れてみようと、Unityを導入してみました

Unity

3Dのゲームやアプリケーションを作るためのライブラリ及び、開発環境

プログラミング言語にはC#が使われています

ライブラリがOSの違いのクッションになるので、Windowsで作ったアプリをiOSやAndroidで動かすといった事が可能(マルチプラットフォーム)

データと描画が一体化している

通常のグラフィックプログラミングだと、内部のデータを計算してから、それを元に描画するという流れがあるのですが、Unityだとデータと描画が一体化しているので、制作手法が独自になります。

例えばブロックの集合を回転させる場合、通常だとデータの位置を書き換えて、その位置に新しくブロックを表示するだけなのですが、Unityだと実際に個々のブロックを移動させなければいけません。

そこは少し工夫する必要がありますね。

インストール

ネットで調べながらインストール

Unity インストールと検索すれば、たくさんの記事が出てきます。(いい時代)
日本語化もしました

Unityの勉強

ドットインストールで一通り勉強しました

2,3分の動画が20個くらいあって
1時間ほどで概要を理解できます

ドットインストールはあらゆるプログラミング言語を動画で解説している素晴らしいサイトです

OneNoteで設計

OneNoteはとても便利なツールで
アウトラインのツリー構造が設計に適しています。

これを書きながら、オブジェクト指向というのは結局のところツリー構造でソースを管理するためのものなんだと気付きました

実際にプログラム

初めてのUnityプログラムなので、難しい事は避け
過去にOpenGLで作った3Dのテトリスを作ってみます。

5×5×10の立体フィールドで
平面が揃ったら消えるといった感じです

画面上のオブジェクト

  • フィールド
  • ブロック
  • 落下中のブロックの集合

この3つのオブジェクトを用意します

動的にブロックを生成するためにブロックとブロック集合をプレハブ化します

各所に散在しているブロックが面を形成しているか調べるのは、とても複雑なので
予めフィールドにブロックを敷き詰めておいて、表示・非表示を切り替えることで管理します。
そうする事で、その面のブロックが全て表示されているかどうかを調べるだけで、面が揃ったかを判定できます。

全体の進行管理はフィールドオブジェクトで行います

ブロック集合の生成、落下処理

フィールド上のブロックの初期生成、表示・非表示

当たり判定はダミーブロック集合を作って、回転や落下処理を行わせ、それが壁やフィールドブロックに当たっているかどうかで移動可能判定をします。

製作中

回転、落下、当たり判定、積み上げまで書きました。
C#は始めて触りましたけど、C++と似た感じで扱いやすかったです。
ソースとヘッダーに分かれてないところが良いですよね。
MicroSoftが作った言語だからかIntelliSenseとの相性も抜群です。

あとは消去処理と得点表示

サウンドやBGMも付けたいですね

おすすめ

1件の返信

  1. 2020年5月12日

    […] 以前書いたUnityで3Dテトリスの記事がよく検索に引っかかってるみたいなので長々と放置してたプログラムに手を付けることにしました消去処理とスコア表示がまだでしたね。 […]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です