Unityでテトリス風落ちゲーを作ってみたいけど、何から手を付けていいか分からない。私もそんな一人です。ここでは、自分の勉強も含めて、簡単なテトリス風落ちゲーを制作していく過程を掲載していきます。
この連載を最後まで読めば、このようなテトリス風落ちゲーが1人で作れるようになります。
別ウィンドウで開く場合はこちら
今回はスコア加算編です。
前回記事では、1列ブロックが揃ったのを判定し、ブロックを消去するまでのプログラムを解説しました。
今回は、消去列数に応じてスコアを加算する仕組みを作っていきます。
この記事はこんな人におすすめ!
- 用意されたアセットを極力使わず、自分の力でゲームを作りたい
- プログラミング初心者で1つ1つ丁寧に解説した記事が読みたい
- Unity初心者がスキルを上げながらゲームを制作していく過程を見たい
本ゲーム制作方法は自己流です。もっと簡単に作る方法もあると思いますので、ご了承下さい。
スコアを表示するTextオブジェクトを作成
まず、ゲーム画面上にスコアを表示するテキストオブジェクトを追加します。
HierarchyウィンドウからUI > Textを選択して下さい。
Canvasオブジェクトが出来、その下にTextオブジェクトが追加されます。名前をScore Textに変更しましょう。
次にInspectorウィンドウ TextコンポーネントのText、Font Size、Colorを下図のように変更します。
続いてSocre Textオブジェクトをゲーム画面左上に配置します。
Inspectorウィンドウ Rect TransformコンポーネントのAnchor Presetsを選択し、Altキーを押しましょう。すると、下図のような表示から
下図の表示に変わります。四角で囲まれた箇所をクリックして下さい。
Score Textオブジェクトがゲーム画面の左上に配置されました。
消去列に応じてスコアを加算するメソッド作成
ここでは、消去列に応じてスコアを加算するメソッドを作成していきます。
GameControllerスクリプトを開いて、下のAddScoreメソッドを追加して下さい。
private int AddScore(int rowNum)
{
int addScore;
if(rowNum == 1){
addScore = 10;
}
else if(rowNum == 2){
addScore = 30;
}
else if(rowNum == 3){
addScore = 80;
}
else if(rowNum == 4){
addScore = 200;
}
else{
addScore = 0;
}
return addScore;
}
引数を消去列、戻り値を加算スコアとしています。1列揃ったら10点、2列揃ったら30点、3列揃ったら80点、4列揃ったら200点としました。
1列以上揃ったら、列数に応じたスコアを加算し、Textオブジェクトに反映するスクリプト作成
Score TextオブジェクトのTextをGameControllerスクリプト上から変更出来るように、以下をスクリプト先頭に追加します。
using UnityEngine.UI;
次にscoreText変数、score変数を追加します。
public Text scoreText;
private int score;
Unityに戻るとGame ControllerオブジェクトのGameControllerコンポーネントにscoreText変数が追加されますので、Score Textオブジェクトをドラッグします。
これでGameControlleスクリプト上からScore TextオブジェクトのTextを変更する準備が整いました。
では、消去列に応じた点数をscoreに加算し、scoreTextに反映するスクリプトを作成していきます。
まず、前回のブロック消去編で作成したBlockEraseメソッドを修正します。
消去列数eraseCountを戻り値として返すようにしました。
private int BlockErase(){
int eraseCount;
/*
(省略)
*/
return eraseCount;
}
eraseCountをAddScoreメソッドの引数とし、消去列数に応じた点数をscoreに加算します。そして、scoreTextにscoreを反映させます。
void Update() {
switch(gameStat){
/*
(省略)
*/
case ERASE:
int n;
n = BlockErase();
score += AddScore(n);
scoreText.text = "SCORE: " + score;
NextBlockSet();
gameStat = START;
break;
}
}
実際にゲームを動かしてみよう
1列揃ったらゲーム画面左上に、消去列数に応じて加算されたスコアが表示されます。
まとめ
消去列数に応じてスコアを加算する仕組みを作りました。
今回以下を解説しました。
- スコアを表示するTextオブジェクトを作成
- 消去列に応じてスコアを加算するメソッド作成
- 1列以上揃ったら、スコアを加算し、UI表示するスクリプト作成
次回は最上位列までブロックが埋まったらゲームオーバーする仕組みを作っていく予定です。
最後までお読み頂きありがとうございました。