BLOGブログ

2024.07.10UE5UE/ 初心者向けUE/ Blueprint

[UE5]UE5で簡単なゲームを作ってみた【2/5:爆発するBOXの巻(上)】

執筆バージョン: Unreal Engine 5.1.1

 

確認

前回はゲームを作成する前の下準備をしました。

今回はゲームを作り始めます。まずは作る物LISTを確認してみましょう。自作しないとだめな部分はこの五つになります。

4 弾が当たると爆発四散するCUBE <--今回はこのCUBEを作成していきます。

5 CUBEを上空から生成するシステム 

6 CUBEが消滅する時、獲得する点数をCOUNTしてくれるシステム 

7 制限時間になると、ゲームPLAYを止めてくれるシステム 

8 SCOREを表示してくれるUI 

 


CUBEの仕様を考える

CUBEの仕様を細かく考えてみます、ここで仕様が固まらないと、後で困る事になります。

1 弾が当たると爆発します。

2 爆発すると、近くにあるCUBE達も爆風に巻き込まれて爆発します。これで連鎖爆発狙えて爽快!

3 CUBEをランダムな点数で設定して、その点数の高さによってCubeの色と大きさが変わります。

※他にも、点数を獲得した際にTotalScoreに加算したり、CUBEをスポーンする仕組みも必要ですが

 これは他のBPとの連携が必要になるので、今回は触れないでおきます。

CUBEは機能がいっぱいあるので、今回は結構長くなりますが、よろしくお願いいたします。


 

仕様通りに作る

UEの考え方は部品を作ってゲームを組み立てる形式だから、例えばレベル上に2000個のCUBEがあるとしても、CUBEの設計図さえ作れば、後はUEが勝手に大量生産してくれます。

 

なので、まずはCUBEの設計図を作ります。

 

 

 

 

 

BluePrintClass 作成の Actor BluePrintを選んでください。

説明通りレベル上に配置するObjectなら、ActorBPで物足りる場合が多いです。

 

名前は BP_M_cube にしましたが、

好きなフォルダーで好きな名前をつけてください。

 

 

 

 


ViewPort

これはゲーム中でちゃんと機能する、作り終えたCUBEのBPのViewPort画面です。

一個一個分解して説明していきましょう。

 

 

左上のComponents ウィンドウズ の内容を確認して見ましょう。

一番目のcube_0はCubeのMESH

二番目のSphereはSphereCollison

三番目のParticleSystemは演出用のエフェクト

四番目のRotatingMovementは勝手にCubeを回してくれる便利なcomponent。

※四番目以外のcomponentは全てCubeの機能に深い関わりがあります。

 

 

 

cube_0のDetailsを設定します。

1 Cubeはレベル上で動きまくるので、MobilityをMovable(動的)に設定します。

2 StaticMeshを既存アセットのSM_ChamferCubeにします。

3 Cubeは空から降ってくる仕様なので、フィジックスが必要です。PhysicsのSimulatePhysiceの項目にチェックを入れます。

これくらい設定するとEventGraphでの作業を始める事ができます。

※CollisonとParticleSystemの部分は後で設定します。

 

 

 


 

EventGraph

BPを使って、CUBEの仕様を実現する所に来ました、ワクワクしますね!

まずは完成形を見てみましょう。

とても簡単に見えますが、実は作成したBPを折り畳んでるだけ、でもこうするとCUBEの仕組みはかなり単純のはわかるはずです。

1 弾が当たると、当たる回数によってCUBEのLIFEが減り、0になると破壊演出に入る。

2 爆風に当たると、LIFEに関係なく少し遅れて破壊演出に入る。

3 破壊演出をする。

この三つの機能を作れば、CUBEの仕様の上二つをクリアできます。

ではまず1と3番から組んでいきましょう。


1番の中身を展開してみました。

またいくつかのパートに分かれますね。

1 Cube_0がHITされた時、処理を始めるイベントBPです。なにがHITしたのかもわかります。

ここで気を付けて欲しいのは、OnComponentHitの後ろに(Cube_0)が書かれています。

つまりこれはcube_0がHitされた時に走るBPで、他のcomponentは関係ありません。

※Hitを理解したいなら、二つの物の表面が接触するイメージを持つといいかもしれません。

 Overlapは重なっている状態を指すので別物です。

 

2 OnComponentHitから伝わってくる──ぶつかった物の情報を受け取り、弾丸かどうかをチェックするBPです。

 弾丸なら引き続き処理を行います、違うなら何もやりません。

Cubeは空中から降ってきて、色々な物とぶつかります、何でもかんでも影響受けて爆発してたらゲームになりません。

なので、BPでぶつかった物が弾丸かどうかをチェックするBPが必要になります。

ここではCastToのBPを使って、弾丸が当たる時だけ処理を行うようにします。

右クリックして、CastToBP_FristPersonProjectileを打ち込むと作成できます。BP_FristPersonProjectileは弾丸のBPです。

 

3 弾丸が当たると、CubeのLifeが10点減点します。そして減点した後の数値をLifeに設置し直します。

 終わった後に後ろのBranchまで処理を走らせます。

Cubeが何発弾丸を当たると爆発する機能を作りたいので、Lifeという変数が爆誕しました。

 

 

 

 

左側のウィンドウズ中のVARIABLES項目の+ボタンを押して、Lifeという整数変数を作成しましょう。整数はIntegerです。

中に入れる数値は後で処理しますので、ここの初期値は適当で問題ありません。

 

変数を掴んで、そのままEventGraphにドラッグ&ドロップする時

このような選択肢が出てきます。

Get変数とSet変数、似てるように見えるが、全然違います。

変数の名前に数という漢字が入ってるが

中に入ってるものは必ずしも数値ではありません。

理解するなら、変数はものを置ける箱なイメージで、しかも最初から箱の形は決めてますから、同じ形の物しか入りません。

※変数の用途は同じ形の物を出し入れすることです。

 つまりGetなら変数の中身を貰ってくる、Setなら同じ形のものを中に入れる事です。

やる意味はないかもしれませんが、変数の中身をGetして、何もせずまた同じ変数にSetすることも可能です。

ここまでわかれば、上のBPは弾丸がCubeに当たる時、変数Lifeの中身を参照して、その数字を―10して

また変数LifeにSetする動きをしてることが分かります。

つまり毎回弾丸が当たると、変数Lifeの中身の整数は―10されます。

 

4 弾丸が当たると、毎回変数Lifeの中身は0になりましたか?の結果をチェックします、

 0か0以下な場合だけCubeの破壊演出まで処理します。

Branchは使う場面がとても多いブループリントです。Boolean値を受け取り、TureかFalseかで処理を変えます。

ここでは変数Life内の数値を参照して、0か0以下になってるのか?の結果を見てBoolean値を出します。それをBranchが受け取ります。

※Booleanは1(Ture)と0(False)しかない扱えない変数の型です。

ここでやっと、弾丸がHitするとCubeのLifeが減って、そしてLifeが0になると“何か”を実行するまでの処理を作成し終えました。

後は爆発するBPを組んでいきます。簡単なので安心してください。

 


 

これは爆発した部分のBPです。

CubeのLifeが0になると、この流れで処理します。

まず1の部分でLifeが0になった0.2秒後でEFFECTを再生して、同時に2でSoundを流します。

そして更3で0.2秒の後にActor自身を消します。

仕組みは簡単で、Lifeが0になると爆発のエフェクトと音声を流してCubeを消します、それだけです。

ここでは使用しているBPと使用方法を紹介します。

 

Delay 

入力した数値の秒数の後に後ろのノードを実行する関数。1秒の後に爆発して欲しいなら1と入力すれば問題ありません。

Toggle Active

EffectのOn/Offを切り替えてくれる関数です。ちなみにEffectは他のアセットと違って、VisibleではなくActiveでOn/Offを切り替えます。

 

 

爆発EffectはLifeが0になる時だけActiveして欲しいので、

EffectのDetail、Activation項目のAutoActiveチェックは必ず外してください。

後はParticleSystemのcomponentを掴んで、Eventgraphにドラッグ&ドロップして、ToggleActiveのTargetに繋げてください。

これでUEにActiveにしたいEffectを教えることができます。

Spawn Sound Attached

指定したcomponentのWlord位置でSoundを流します。PlaySound atLocationならActorのWlord位置を取らないとだめですが

このBPだと要らないので、このまま使えます。

ちなみにAudioもEffectと同じく、ActiveでOn/Offを切り替えることができます、なのでAudioをcomponentにすれば

ここでEffectと同じ様にToggle Activeで再生できます。ですがActorがDestroyされると

音も一緒に消えるので、ここではSpawnSoundAttachedを使います。

Destroy Actor

Actorを破棄してくれます。爆風と共にCubeが消える演出にできるので、他の処理のトリガーにもなります。

注意点はレベル上からActorが消えますので、DestroyActorした後に他のActorとコミュニケーションとることができなくなります。

 


 

これでCubeに弾丸が当たるから破壊されるまでの処理を全部作りました。仕様を確認してみましょう…

1 弾が当たると爆発します。<-完成

2 爆発すると、近くにあるCUBE達も爆風に巻き込まれて爆発します。これで連鎖爆発狙えて爽快!<-半分完成

3 CUBEをランダムな点数で設定して、その点数の高さによってCubeの色と大きさが変わります。<―未完

どうやら残り後半分です!

少し長くなりましたので、残りの部分は次回になります。

よろしければまたお付き合いください!