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。
生成すると、Hierarchy ウィンドウ上に"Canvas" と "Text(TMP)", "EventSystem"の3 つが追加される。
Canvas は、UI オブジェクトを表示するためのCanvas コンポーネントを持ったGameObject 。UI オブジェクトはすべてCanvas の子GameObject にしておく必要がある。Canvas コンポーネントにもいくつか設定項目があるが、簡単なUI であれば、Default のままでよい。
EventSystemは、UI コンポーネントがユーザ操作イベントを扱うためのEventSystem コンポーネントを持ったGameObject。
Canvasの下にある"Text(TMP)"がTextMeshPro コンポーネントを持ったGameObject 。Text Input Edit ボックス上に文字を入れると、画面上に入力した文字が表示される。使用するFont や、文字サイズや、右寄せ、左寄せなどのアライン設定などのパラメータが存在する。
スコアやレベルは、ゲームの進行によって動的に変更される値であるが、スクリプト上から、TextMeshProコンポーネントのTextパラメータに文字列を設定すれば、その時点で表示が更新される。
スコアとレベルのテキストUI を追加し、スクリプトから値を更新するようにしたプロト実装の結果が下記。
次の記事