独習 Unity アプリ開発

独習でスマフォ向けアプリ開発を勉強中

Unity で テトリス風ゲームを作ってみる#9

前回の続き


前回、Next エリアをどうするかが決まったので、今回はスコアとレベルについて考える。

 

スコアとレベル


スコアが入るのは、テトリミノが着地してラインが削除された時。一度に削除されるラインの数によって、スコアが高くなるようにする。

今回は、1 ラインなら10 点、2 ラインなら20 点、3 ラインなら40 点、4 ラインなら 80点というようにする。

またスコアは、画面の左側、Next エリアの下にテキストで表示する。

無限にスコアが上がると困るので、上限値を決めてそれ以上はスコアが上がらないようにする。

 

レベルは、削除したトータルのライン数が特定の値を超えた場合に上がるようにする。

今回は、10 ラインを削除するごとにレベルが上がるようにする。

レベルが1 上がるごとに落下速度を特定の割合で早くしていく。

またレベルも、画面の左側、スコアの下にテキストで表示する。

レベルも無限に上がると困るので、上限値を決めてそれ以上は上がらないようにする。

スコアは、0 から始まるが、レベルは1 から始まるものとする。

 

よって、

    • 一度に削除したラインの数を検知する
    • 削除したライン数をスコアに換算し、テキストとして表示する
    • 削除したライン数の累計数をカウントする
    • 削除したラインの累計数からレベルに換算し、テキストとして表示する
    • レベルから落下速度を算出して設定する

の5 つができればよい。

 

削除したライン数の検知は、削除処理の中でカウントしておけばよい。スコアへの換算や、累計数のカウント、レベルへの換算も単純な処理を追加するだけで実現可能。Unity だからと言って特殊な方法はない。

よって、テキストへの表示方法をどうやるのかがクリアになればOK。

 

    • TextMeshPro

Unity でテキストを表示する方法は、TextMeshPro というUI コンポーネントを利用する。

Hierarchy ウィンドウから右クリックして、"UI"→"Text -TextMeshPro" を選択するとText UI のGameObject が生成される。

初めて生成する場合は下記の画面がでるが、"Import TMP Essentials"を選択すればOK。

TextMeshPro Import

 

生成すると、Hierarchy ウィンドウ上に"Canvas" と "Text(TMP)", "EventSystem"の3 つが追加される。

TextMeshPro UI

Canvas は、UI オブジェクトを表示するためのCanvas コンポーネントを持ったGameObject 。UI オブジェクトはすべてCanvas の子GameObject にしておく必要がある。Canvas コンポーネントにもいくつか設定項目があるが、簡単なUI であれば、Default のままでよい。

EventSystemは、UI コンポーネントがユーザ操作イベントを扱うためのEventSystem コンポーネントを持ったGameObject。

Canvasの下にある"Text(TMP)"がTextMeshPro コンポーネントを持ったGameObject 。Text Input Edit ボックス上に文字を入れると、画面上に入力した文字が表示される。使用するFont や、文字サイズや、右寄せ、左寄せなどのアライン設定などのパラメータが存在する。

 

TextMeshPro コンポーネント

スコアやレベルは、ゲームの進行によって動的に変更される値であるが、スクリプト上から、TextMeshProコンポーネントのTextパラメータに文字列を設定すれば、その時点で表示が更新される。

 

スコアとレベルのテキストUI を追加し、スクリプトから値を更新するようにしたプロト実装の結果が下記。

 

www.youtube.com

 

次の記事


from20150817.hatenablog.com

 


目次に戻る