取得したスコアを徐々に加算して表示するスコア加算表現方法!

取得したスコアを、徐々に加算して表示する方法を紹介します!

例えば・・・

スコアを「10」獲得したら、「1」ずつ加算して最終的には「10」と表示する。

スコアを「1000」獲得したら、「100」ずつ加算して最終的には「1000」と表示する。

この表現方法だと、獲得したスコアがジャンジャン溜まっていってる感じがして

表現としてとても良いと思います。

f:id:Free_Gamer:20220216215330g:plain

~目次~

ウィジェット用のBPインターフェースの作成

「BPI_Widget命名

f:id:Free_Gamer:20220216221039j:plain

「BPI_Widget」を開き

イベントを2つ作成します。

「UpdateScore」という名のイベントと

「SetScore」という名のイベントを作成します。

f:id:Free_Gamer:20220216221112j:plain

UpdateScore

「UpdateScore」のインプット値は、2つのInteger型。

「Score」と「GetScore」の2つです。

Score・・・スコア。

GetScore・・・取得したスコアの量。

f:id:Free_Gamer:20220216221219j:plain

SetScore

「SetScore」のインプット値は、Integer型。

Score・・・スコア。

f:id:Free_Gamer:20220216221423j:plain

スコアウィジェットの作成

スコアを表示するためのウィジェットの作成をします。

「WB_Score」命名

f:id:Free_Gamer:20220216221535j:plain

ウィジェットの構成は以下のようになっています。

f:id:Free_Gamer:20220216222432j:plain

画面の左上に表示されるようにしています。

f:id:Free_Gamer:20220216221939j:plain

BackgroundImage

BackgroundImageは、Imageのことです。

f:id:Free_Gamer:20220216222707j:plain

HorizontalAlignmentとVerticalAlignmentを以下のように設定します。

f:id:Free_Gamer:20220216222816j:plain

Score_VB

「Score_VB」は、VerticalBoxのことです。

f:id:Free_Gamer:20220216222957j:plain

HorizontalAlignmentとVerticalAlignmentは以下の通りです。

f:id:Free_Gamer:20220216223130j:plain

ScoreName

ScoreNameは、TextBlockのことです。

f:id:Free_Gamer:20220216223410j:plain

HorizontalAlignmentとVerticalAlignmentは、以下の通りです。

f:id:Free_Gamer:20220216223509j:plain

LineImage

LineImageは、Imageを使用しています。

f:id:Free_Gamer:20220216222239j:plain

「Score」と「0000000000」の間に配置しています。

区切り線を表現しています。

f:id:Free_Gamer:20220216222220j:plain

サイズは「Y」を「2」にして、細くしています。

f:id:Free_Gamer:20220216222549j:plain

HorizontalAlignmentとVerticalAlignmentは、以下の通りです。

f:id:Free_Gamer:20220216223844j:plain

Score_TB

Score_TBは、TextBlockのことです。

f:id:Free_Gamer:20220216223950j:plain

HorizontalAlignmentとVerticalAlignmentは、以下の通りです。

f:id:Free_Gamer:20220216224053j:plain

スコア加算処理

変数の作成

「AddScoreSpeed」のデフォルト値は、「0.01」になっています。

それ以外は「0」です。

f:id:Free_Gamer:20220216225708j:plain

イベントグラフ

ゲーム開始時、スコアの初期値を取得します。

f:id:Free_Gamer:20220216224432p:plain

ToTextの

「UseGrouping」をFalse。

「MinimumIntegralDigits」を「10」にしています。

「UseGrouping」をFalseにすると
値が1000に達したときに表示されるカンマ(,)を非表示にすることが出来ます。

「MinimumIntegralDigits」は、値を「10」にすると

「0000000000」という感じで、10桁まで表示することが出来ます。

f:id:Free_Gamer:20220216224727j:plain

スコアを取得した時に「UpdateScore」イベントが呼び出され

処理を行っていきます。

f:id:Free_Gamer:20220217102939p:plain

「UpdateScore」イベントが呼ばれた時に

f:id:Free_Gamer:20220217103009p:plain

スコア加算タイマーイベントがアクティブな場合

つまり、スコア加算処理がされている最中だった場合は

取得したスコアを、加算中のスコア(Score)に上書きし
スコアを表示するためのカスタムイベント「ShowScore」を呼び出します。

f:id:Free_Gamer:20220217103042p:plain

カスタムイベント「ShowScore」は、以下のようになっています。

f:id:Free_Gamer:20220217103831p:plain

イベント「UpdateScore」のScoreピンを、変数「NewScore」に

GetScoreピンを、変数「GetScore」に繋ぎます。

f:id:Free_Gamer:20220217103257p:plain

取得したスコア量に応じて、スコアの加算量を定義します。

「SetUpdateAmount」は自作マクロです。

f:id:Free_Gamer:20220216225452p:plain

「SetUpdateAmount」マクロの中身は以下の通りです。

f:id:Free_Gamer:20220216225950p:plain

例えば、取得したスコア量が「100」だった場合

スコアを「10」ずつ加算する。

取得したスコア量が「1000」だった場合

スコアを「100」ずつ加算する。

というような定義をしています。

 

もしこの定義をしていないと

例えば、取得したスコア量が「10000」だった場合

スコアを「1」ずつ加算するとしたら、結構時間がかかってしまうと思います。

そうならないために、「SetUpdateAmount」マクロで、スコアの加算量を定義しているのです。(伝わったかな・・・??)

 

 

スコア加算処理であるカスタムイベント「GraduallyUpdateTheScore」を呼び出す。

指定した速度(AddScoreSpeed)で、加算処理を繰り返し呼び出します。

f:id:Free_Gamer:20220216230612p:plain

カスタムイベント「GraduallyUpdateTheScore」の処理です。

f:id:Free_Gamer:20220217103656p:plain

Scoreの値が、NewScoreの値と同等かあるいはそれ以上かを判定しています。

f:id:Free_Gamer:20220216230936p:plain

Falseにつながる処理です。

スコアを決められた量ずつ加算していきます。

そして、スコアを表示するためのカスタムイベント「ShowScore」を呼び出します。

f:id:Free_Gamer:20220217103732p:plain

Trueにつながる処理です。

タイマーを止めます。

f:id:Free_Gamer:20220216231133p:plain

スコア取得処理

変数の作成

「ThirdPersonCharacter」を開き

1つ変数を作成します。

デフォルト値は、「0」です。

f:id:Free_Gamer:20220216231834j:plain

イベントグラフ

ゲーム開始時、ウィジェットを表示し、スコアの初期値をウィジェットに渡す。

f:id:Free_Gamer:20220216231914p:plain

「1」キーが押された時、スコアを「1000」加算する。

「2」キーが押された時、スコアを「10」加算する。

加算した結果の値と、加算量をウィジェットに渡します。

f:id:Free_Gamer:20220216231954p:plain

テスト

これでOKです。実際にプレイしてみましょう!

「1」キーを押したときに、スコアが「1000」まで「100」ずつ加算されて

「2」キーを押したときに、スコアが「10」まで「1」ずつ加算されていればOKです!

youtu.be

動画のようになっていればOKです!

それではまた!^^ノシ