UE5でスイカゲーム風 #8 合体で進化

※本サイトはアフィリエイト広告を利用しています。

本日のテーマは『スイカゲーム』風の落ちものパズルを作ろう です
本記事は前回のゲームのコア部分「フルーツマージ」機能をレベルアップさせ進化させます

URSuika UnrealEngine製のスイカゲーム風3D落ちものパズルゲーム – BOOTH

無料です(Windowsのみ)遊んでみてください。

合体で進化

前半ラストは進化の実装です

スイカゲームといえばフルーツが大きくなって品種も変わって最後スイカできるのかできないのか ですね

スポーンするときに玉の大きさを変えればよさそうです
でも今後サイズは段階ごとに調整するかもしれないし、そもそもフルーツのように見た目を1つずつ変えたりするかもしれません。

なので、直接大きさの情報をやり取りするのではなく、いま何段階目かというRPGのレベルみたいな概念を導入します

BP_ThirdPersonCharacter > イベントグラフ / SpawnMain

カスタムイベントの詳細欄からインプットを追加します

変数の型をIntegerという0,1,2…の整数型にしておきます
これで、フルーツを作ってもらう側はレベルの数字だけ管理すればよく、レベルごとの大きさや見た目はフルーツ生産者側で管理できます

このように、ゲームの仕組みと、見た目などの製品クオリティにかかわる部分を分けて作っておくと、あとからデザイン変更してもゲームの仕組みが壊れません

今回は簡単に サイズをレベルx定数 (一定比率)仕様で生産します
(あとで色を変えたり形を変えたりします)

いま最初のレベルとしては大きすぎるので0.5倍からスタートにしてみようかなと

よっしー
よっしー

下のピンは浮動小数点型に変えたのも大事です
整数同士は掛け算しても整数に丸められるので、浮動小数点型で出力されるようにする必要があります

これをスケールのピンに接続すると自動的に型変換のノードが追加されました

これは数値の掛け算結果はスカラーともいう単体でこっちのスケールはベクトルというXYZの複数の要素があるものなので、このようにすべての要素に同じ数字を掛けているのと同じ意味です

※戻しておきます
これで指定したレベルに応じた玉を生産するすごい農家になりました

依頼する側

あとは生産依頼する側にレベルの導入が必要です

持ち玉はいったんレベル1固定にしておきましょう

ぶつかったときのレベルは元のレベル+1したいですね

それにはすべてのフルーツがレベル情報をもつ必要あるので、プレイヤーが全フルーツをリスト管理するよりも、フルーツ自体がレベル情報を持つのがよさそうです

とりあえずこのイベントもレベル情報を受け渡すようにしておきましょう

ではBP_Fruitクラスです

まずクラスの変数としてレベルを作ります
レベル初期値は1に変えておきます(掛け算でサイズ決めるので0からだと消えちゃうので)

そして合体したときは、自身のレベル+1のフルーツを生産して、自分たちは消えると

合体すると自身は消えて作り直す仕様にしたので、レベルを変えるのはスポーンするときが妥当でしょう
スポーンするときにあなたはレベルいくつですよと教えてあげるイメージです

スポーンするときに指定する方法は、
まず、変数一覧で目玉のマークを開くとクラスの外から編集可能になります

ですが、スポーンするときに指定できるようにするにはもう一つスポーン時に公開にチェックを付けます

これで、SpawnActorFromClassノードにレベルピンが増えるはずです

BP_ThirdPersonCharacter に戻ります

よっしー
よっしー

でない場合はいったんクラス編集画面を閉じて開きなおしたりしてみてください

3段階目にも進化できました
ですが、いまはサイズが違っても進化してますね

同じフルーツ(サイズ)のときだけ合体

合体できる条件が、現在は「フルーツ同士だったら」なのでサイズが違っても合体できちゃいます

ではBP_FruitのHit時、「レベルが同じだったら」の条件判定を追加したらゴールです

自分自身のレベルは変数一覧からドラッグです
相手のレベルはOtherActorをキャストしたここからGet**で取り出します

これでぶつかった相手がフルーツだったらレベルを見てあとは一致していたらです

整数には誤差はないので3番目の許容誤差ピンはありません

一致していたら合体で一致してないときはなにもしなくてよいですね

なにもしないと物理でぶつかって跳ね返ります違うフルーツは押しあう関係性とさぁ結果やいかにおっ、乗っかりましたね転がってからも合体できてます違うサイズは合体しませんね これもOKですよし、3段階目も問題なさそうですわーい完成です

持ち玉サイズをバラつかせる

簡単なのでおまけで持ち玉のサイズをランダムにして終わりましょう

さきほど1固定したところに、ランダムな数字を出す便利なノードをつなぐだけです
Random Integer in Range です

よっしー
よっしー

inレンジというのはチンする装置ではなくて範囲指定です

最小と最大を含む範囲内の整数をランダムに作ってくれるのでチェリーから柿までの本家仕様にあわせるなら1から5ですね

できましたね
まだバグがありますがそれは後日の記事で解決します

よっしー
よっしー

でかっwww

コメント

タイトルとURLをコピーしました