オブジェクトの衝突時にスコアを簡単に更新する【Unity的当て】 | グッドラックネットライフ

オブジェクトの衝突時にスコアを簡単に更新する【Unity的当て】

前回は、的当てゲームに制限時間を設定しましたね。

制限時間がある以上必要になってくるのが「スコア」です。スコアがないと何を基準にしてクリアなのか分かりませんからね。

と言う事で今回は、スコアを実装したいと思います。

的当てゲームにスコアを実装する

序盤の流れは、前回制限時間を付けた時と大体一緒ですね。

まずは、テキストを用意して、どこに配置するのかを決めましょう。

的当てゲームにスコアを表示

「UI」から「Text」を選択して名前を「Score」にしておきます。

制限時間のテキストを左上に配置しているので、スコアは基本的に右上ですかね。

飛ばすボールに被らないようにした方が、見栄えも良くなりますしね。

後は特別設定を変えていませんが、文字が小さかったので「Font Size」を20にしています。

スクリプトを修正する

次に、的のジェネレータスクリプトにスコア処理を追加しましょう。

的当てゲームにスコアを表示するスクリプト

前回と同じように、テキストを使っているので、4行目にある「using UnityEngine.UI;」の宣言を忘れないようにしましょう。

スコア処理で追加したのは赤枠の部分2か所です。

9行目と10行目で、テキストとスコアの変数を宣言します。

スコアがどのタイミングで更新されるのかと言うと「的にボールが衝突した時」ですよね。

ですから、OnCollisionEnterメソッド内に、スコアの計算処理を記述すれば良いってことです。

今回の場合は15行目で、ボールが的に衝突する度に10点プラスするようにしています。

そして、次の行でstring.Formatを使って得点を表示します。

スコアの表示や計算は、難しそうに感じますが意外と簡単に出来ちゃいます。

アウトレット接続を使ってスコアのテキストを代入する

スクリプトを保存したら、前回と同じようにアウトレット接続を使ってテキスト「Score」を代入しましょう。

アウトレット接続でスコアを代入

どこに代入するのかと言うと、的のジェネレータスクリプトがアタッチされている「Cube」にある「Score text」の部分です。

ここに「Score」を代入します。

空のオブジェクトを作って、的のジェネレータスクリプトをアタッチして代入しないように気をつけましょう。的にボールが衝突しても、スコアは更新されずエラーになっちゃうので。

ここまで出来たら、ゲームを実行して確認しましょう。

スコアが実装された的当てゲーム

ボールが的に当たったら、ちゃんとスコアが更新されていますね!

制限時間とスコアが実装されたことで、よりゲーム性が増したと思います。

また次回、なにかしらアップデートしたいと思います。今回はこの辺で。