本記事はフルーツ合体時に得点をゲットする仕組み をつくります。
URSuika UnrealEngine製のスイカゲーム風3D落ちものパズルゲーム – BOOTH
無料です(Windowsのみ)遊んでみてください。
得点計算
BP_ThirdPersonCharacter > イベントグラフ / 新規カスタムイベント UpdateScore

呼び出されたら今獲得した点を入力で受け取りウィジェットに渡すつくりとします
が、それだけでは得点が増えていかず、今獲得した点を表示するだけなので、総合得点を新しい変数で管理するようにして、これに今ゲットした点を加えます
TotalScoreという変数を新たに作り、これを一旦ゲットして現在値を得て、いまゲットした得点をこれに加算して今度はセットで上書きします

これでいまの得点に追加点を加算し更新する処理ができました。呼ばれれば、更新された合計得点を画面に表示します
が、まだ誰もこの処理を呼び出していません
何点ゲットしたかについてもフルーツ同士がぶつかったタイミングで決めるのがよさそうですね
では、BP_Fruitのヒットイベントから得点を渡す?はちょっと面倒そうですね。
合体した次のフルーツをスポーンさせるときに、いま合体したことで何点ゲットしたかを条件にすればプレイヤー側で点数表の管理もできそうですね
ただしスポーンメイン処理のなかだと、ただの持ち玉の時にも得点をゲットしてしまい不都合なので
、メイン処理後、合体した側の分岐の先だけでやるのが適切でしょう
BP_ThirdPersonCharacter > イベントグラフ / SpawnFruit

手前からLV変数を引っ張ってきて繋いでしまえば、レベル1同士で2,3,4,5点・・・獲得できる仕様になります

さきほどの呼び出し側で得点を決めるか、レベルを受け取ってから決めるかは好みですが
今回はUpdateScoreでレベルから得点を変換する処理を追加します
マテリアルやメッシュの配列を作ったのと同様に、スコア配列を作りましょう
現在、合体したあと次のレベルが来る仕様なので、得点はレベル2からです

スイカゲームっぽい得点仕様にしています
スイカ同士が合体できる仕様の場合に何点取れるのかわからないのと、次のフルーツを出すときに得点できる仕様だとそこは獲得できないので、その仕様で得点獲得させたい場合はもう一工夫考えてください

たとえば、フルーツがぶつかった側の処理では判定しないで、
SpawnFruit側で出さないとかってすればよさそうです
BP_ThirdPersonCharacter > イベントグラフ / UpdateScore

これでレベルに応じた得点が配列から選ばれて、現在のスコアに加算される処理が完成しました

今獲得した点数も+50点みたいな演出にしたい場合は、ウィジェットに総合点と今獲得した点を両方渡せるようにすればウィジェット側で処理できますね。

ゲームオーバーもちゃんとでました
が、持ち玉を直接落とさなきゃまだ遊べますね。今回はこの仕様のままとしますが
ゲームオーバーなのに得点が増えるのは止めようと思います
「ゲームオーバーになったら以後は得点加算しない」でいいのでフラグを作りましょう
得点のほうを分岐ですね。ゲームオーバー じゃなかったら得点を加算します。そしてゲームオーバー時にフラグを立てればOKです(初期値はオフなので最初は得点できます)

合体はできるけど得点は増えない仕様にできました

自キャラ操作もできないようにするのもフラグでもできますね。
Set InputMode UI Onlyで入力を無効にするとか、他にも方法はいろいろあります。
コメント