前回は、的当てゲームに制限時間を設定しましたね。
制限時間がある以上必要になってくるのが「スコア」です。スコアがないと何を基準にしてクリアなのか分かりませんからね。
と言う事で今回は、スコアを実装したいと思います。
的当てゲームにスコアを実装する
序盤の流れは、前回制限時間を付けた時と大体一緒ですね。
まずは、テキストを用意して、どこに配置するのかを決めましょう。
「UI」から「Text」を選択して名前を「Score」にしておきます。
制限時間のテキストを左上に配置しているので、スコアは基本的に右上ですかね。
飛ばすボールに被らないようにした方が、見栄えも良くなりますしね。
後は特別設定を変えていませんが、文字が小さかったので「Font Size」を20にしています。
スクリプトを修正する
次に、的のジェネレータスクリプトにスコア処理を追加しましょう。
前回と同じように、テキストを使っているので、4行目にある「using UnityEngine.UI;」の宣言を忘れないようにしましょう。
スコア処理で追加したのは赤枠の部分2か所です。
9行目と10行目で、テキストとスコアの変数を宣言します。
スコアがどのタイミングで更新されるのかと言うと「的にボールが衝突した時」ですよね。
ですから、OnCollisionEnterメソッド内に、スコアの計算処理を記述すれば良いってことです。
今回の場合は15行目で、ボールが的に衝突する度に10点プラスするようにしています。
そして、次の行でstring.Formatを使って得点を表示します。
スコアの表示や計算は、難しそうに感じますが意外と簡単に出来ちゃいます。
アウトレット接続を使ってスコアのテキストを代入する
スクリプトを保存したら、前回と同じようにアウトレット接続を使ってテキスト「Score」を代入しましょう。
どこに代入するのかと言うと、的のジェネレータスクリプトがアタッチされている「Cube」にある「Score text」の部分です。
ここに「Score」を代入します。
空のオブジェクトを作って、的のジェネレータスクリプトをアタッチして代入しないように気をつけましょう。的にボールが衝突しても、スコアは更新されずエラーになっちゃうので。
ここまで出来たら、ゲームを実行して確認しましょう。
ボールが的に当たったら、ちゃんとスコアが更新されていますね!
制限時間とスコアが実装されたことで、よりゲーム性が増したと思います。
また次回、なにかしらアップデートしたいと思います。今回はこの辺で。