関連ブログ
- [UE5]チャージショットで弾のバリエーションを増やそう! 2024.10.09UE
- [UE5]PaperZDでプレイヤーキャラを実装してみる(3/3) 2024.10.02UE
- [UE5]PaperZDでプレイヤーキャラを実装してみる(2/3) 2024.09.25UE
CATEGORY
2024.07.10UE5UE/ 初心者向けUE/ Blueprint
執筆バージョン: 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 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を組んでいきます。簡単なので安心してください。
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の色と大きさが変わります。<―未完
どうやら残り後半分です!
少し長くなりましたので、残りの部分は次回になります。
よろしければまたお付き合いください!