UEを学ぶ「UIの表示_4_数値変動を扱ってスコアが増加されるエリアを作る」
Q&Aで触れられていた、
スコア増加エリアの内容をまとめる。
<触れているとスコアが増加するエリアを作る>
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で埋める。
以下のように、ToTextのDigitを設定することで
桁数を事前に0で埋めておくことができる。
参考ではDigitが3なので、3桁表示になるというわけだ。
<エリアに入ると「クリアー」と表示されるようにする>
さっき作成したAreaを使って、
触れたらクリアーが表示するようにする。
まず、UIからWidgetBPを作成し、
「クリアー!」のtextだけを配置する。
次に、先ほどのAddScoreAreaに接触した時のセット処理に
「ウィジェットの作成」を追加し、
先ほどの「クリアー!」を用意したBPクラスを指定。
AddToViewportで画面に表示する仕組みを追加する。
これで、Areaに触れた時に「クリアー!」が表示されるようになる。