Unityで3Dテトリス part2
以前書いたUnityで3Dテトリスの記事がよく検索に引っかかってるみたいなので
長々と放置してたプログラムに手を付けることにしました
消去処理とスコア表示がまだでしたね。
消去処理
指定の段が揃っていたら、消去するという処理を実装。
落下中のブロックが固定されたときに呼び出します。
・指定の段が揃っているか調べる関数
・指定の段を消去する関数
→ 上の段を詰める処理
→ 上の段をコピーする処理 & ループ
といった感じで1つ1つの関数を実装していくと
複雑な処理も簡単に作れます。
※実際は消去せずに、フィールドに敷き詰めたブロックを非表示にしているだけです
スコアの表示
Unityだとテキスト表示も楽々です
ヒエラルキーウィンドウを右クリックしてテキストを追加するだけ
スコアはプログラムからオブジェクトを取得して操作します
public GameObject scoreObject; // スコア表示のテキスト
とソースコード内で変数を定義して、インスペクター内の項目にテキストオブジェクトをD&Dして関連付けます。
画面更新の処理で
Text score_text = scoreObject.GetComponent();
score_text.text = “score:” + score;
とすれば、プログラム内からテキスト内容を書き換えられます。
作り込み
BGMと効果音
フリー効果音サイトからBGMや回転時、消去時の音をダウンロードして音を付けました。
AudioClipオブジェクトに各効果音を割り当て、AudioSourceオブジェクトで再生といった感じです。
publicで変数を宣言するとIDE側に項目が表示されるので、そこにファイルをドラッグ&ドロップすることで
リソースとオブジェクトの関連付けができます。
コンポーネントの追加ボタンからAudioSourceオブジェクトを追加します。
(最初、ヒエラルキーウィンドウから子アイテムとして追加してしまって、なかなか音が再生されずに悩みました)
audioSource.PlayOneShot(sndBomb);
みたいな感じで再生します。
Bomb!
テトリスなのにボム機能を付けてみました。
Bキーを押すと下から4段目までを消去
2段以上の同時消しでボム獲得といった感じでゲーム性を上げてみました。
操作性UP
横から見ているときに↑キーを押すと右に動いたりと操作しづらかったので
カメラのアングルによって、操作キーの挙動を変更するようにしました。
カメラオブジェクトを取得して
float a = cam.transform.localRotation.eulerAngles.y;
で、回転角度を取得できます。
その角度によって、キー操作の動きを変えています。
遊んでみる
・・・なかなか難しくてやりごたえがありますね。
3段揃えて、あと棒待ちという状態でなかなか棒が出てこなくて穴を塞いでしまって
なんだこのクソゲー!と発狂するぐらいに良い仕上がりです。
ソースコードと実行ファイル
英語力皆無の趣味プログラマーなので、ソースへのツッコミは無しでお願いしますm(_ _)m
参考までに
最近のコメント