UEを学ぶ「UIの表示_4_数値変動を扱ってスコアが増加されるエリアを作る」

Q&Aで触れられていた、

スコア増加エリアの内容をまとめる。

 

youtu.be

 

<触れているとスコアが増加するエリアを作る>

BPクラス>Actorを作成

で新規Actorを作成し

BP_ScoreAddAreaと命名

 

ビューポートから

コンポーネントを追加>Box Collider を追加

コンポーネントを追加>球 を追加

して、領域を作成。

形状は、球を薄く引き伸ばして用意する。

 

作成したActorをレベル上に配置して、

サイズをいい感じに調整する。

 

 

次にAreaにOverlapしている時の処理を作成する。

Sequenceを使うことで、既存の処理を残しつつ、

新たな処理へつなぎこむことができるので、既存の処理の間に追加。

 

そして、Cast To BP_ScoreAddAreaノードを追加し、

bool型変数「今エリアにいるよ」を作成・追加する。

これにより、プレイヤーがオブジェクトに接触した時、

「今エリアにいるよ」がTrueになる。

 

イベントActorEndOverlapでエリアを出た時に

「今エリアにいるよ」をFalseにする処理も忘れずに追加しておく。

 

「Key1を押下した」&「今エリアにいるよ」がTrueの時に

Scoreの値に+1した値をSetScoreで更新する。

 

これで、「回復エリア上で1キーを押すとスコアが1増える」機能が追加された。

 

ちなみに、Castを使うとゲームが重くなることがあるらしい。

プロは使わないほうがいい、とのこと。

これについての補足は後の講座で説明があるらしい。

 

<補足>

スコアを0で埋める。

 

youtu.be

 

以下のように、ToTextのDigitを設定することで

桁数を事前に0で埋めておくことができる。

参考ではDigitが3なので、3桁表示になるというわけだ。

 

<エリアに入ると「クリアー」と表示されるようにする>

youtu.be

さっき作成したAreaを使って、

触れたらクリアーが表示するようにする。

 

まず、UIからWidgetBPを作成し、

「クリアー!」のtextだけを配置する。

 

次に、先ほどのAddScoreAreaに接触した時のセット処理に

ウィジェットの作成」を追加し、

先ほどの「クリアー!」を用意したBPクラスを指定。

AddToViewportで画面に表示する仕組みを追加する。

 

これで、Areaに触れた時に「クリアー!」が表示されるようになる。