How to PaperZD その4-チャージ攻撃を作る-

横スクロール2Dアクションで使うようなチャージ攻撃の想定です。
チャージ攻撃と言っても色々ありますが、スマブラのスマッシュ攻撃みたいなイメージになりました。

その4とはなってますが、通し番号のようなもので、前回まで続いた1~3までと関連性があるわけではないです。
が、ファイルなどは続きのものでやるので、興味のある方で触ったことない方は1~3までやっていただけたらわかりやすくなるかもしれません。
(使ってるテクスチャなどは今後特に書く予定がないので)
まあ、ここにたどり着くということは基本UE5のPaper2Dとか周りのことがわかってるものと思います。(僕よりも。)

ここまで書いといて何だけどチャージ攻撃の前に普通の攻撃組んでないのは内緒。

チャージ攻撃で使う素材の用意

Flipbook

チャージ攻撃は三段階

  • チャージ開始直前

  • チャージ中

  • 攻撃

の3種類のFlipbookを用意します。

チャージ開始直前
チャージ中
攻撃

……まあ、このままだと見栄えが悪くなる気がするんですが、ポーズの違いがわかりやすいのでこれで進めます。

AnimationSource

AnimasionSourceに登録。

AnimBPに組み込み

ChargeAttackをジャンプ用ノードとして用意。
PreChargeにチャージ開始直前
Chargeにチャージ中
ChargeReleaseに攻撃
のアニメーションをそれぞれ中に入って繋げます。

忘れてましたがInputActionも用意しておいてください。
自分は右クリックでチャージ攻撃にしました。

BluePrintと遷移ルールの設定

プレイヤー用Blueprintに移動

チャージ攻撃をさせたいプレイヤーキャラのBlueprintに移動し、チャージ中の判別をするBoolean型の変数を用意。(IsAttackChargingと名付けました)

イベントグラフに次の画像のように組みます。
Jump to NodeのJump Nameに先ほど作成したジャンプ用ノード名「ChargeAttack」を入れます。

遷移ルールの設定

StateMachineに戻り遷移ルールを設定していきます。

・PreCharge to Charge
TimeRemaining
Equalを繋げ0とイコールに。
意味的にはアニメーションの残り時間が0になったら、みたいな。

・Charge to ChargeRelease
作ってあったプレイヤーBPを呼ぶ変数(わからない方はその1~3を見てみてください。)を置き、そこから先程作った変数をGet、NOTBooleanに繋がってるので、
IsAttackChargingにチェックが入ってなかったら遷移、みたいな感じ。

・ChargeRelease to Run
PreCharge to Charge
の時と同様にアニメーションが終わったら遷移にします。

チャージ中エフェクトを出す

NiagaraSystemの作成

見栄えのためにチャージ中にエフェクトを軽く作って付けてみます。
フォルダの任意の箇所で右クリック、NiagaraSystemをクリック。

New system from selected emitter(s)を選びNext>

一覧にHanging Particlesがあるので選択肢右下の+ボタン、Emitter to Addに追加されるのでFinish

するとNiagaraSystemファイルができるので名前を変えましょう。(NS_Chargeにしました)

ダブルクリックで開くと次のような画面が出ます。
チャージ風に軽く改造します。(もしくは自分で作ってもらっても構いません。)

Propaties>Emitter>LocalSpaceにチェック。

EmitterUpdate>EmitterState>InactiveResponseをKillに。

ParticleSpawn>InitializeParticle>LifeMinとLifeMaxをそれぞれ0.5と0.6に
Colorを赤系(好きな色でOK)
UniformSpriteSizeMinとUniformSpriteSizeMaxをそれぞれ40.0と50.0に

ParticleSpawn>ShapeLocation>ShapePrimitiveをSphereに。

SystemOverview内のParticleSpawnの右にある+ボタンをクリック
AddVelocityで検索して選択。

ParticleSpawn>AddVelocity>VelocityModeをFromPointに
VelocitySpeedは-25.0

ParticleUpdate内のWindForceとAeridynamicDragをDeleteで削除。

ParticleUpdate>ScaleSpriteSizeのグラフを変更。
次の感じに。数値的には1つ目のキーは0.0 0.15 2つ目は0.8 0.3 3つ目は1.0 1.0
(線の上で右クリック>Add Keyでキーを増やせます。)

ParticleUpdate>ScaleColorのグラフを変更。これはグラフボタン一つ押すだけ。

SystemOverview内のParticleUpdateの右にある+ボタンをクリック
PointAttractionForceで検索して選択。

SystemOverview>PointAttractionForce>AttractionStrengthを50.0に。

なんか中心に溜まる感じのエフェクトが出来上がったかと思います。

Blueprintに組み込み

StateMachineに戻り、Changeノードを選択、Details欄の
Callbaks>On State Enter Event NameとOn State Exit Event Nameをそれぞれ
ChargeStartとChargeStopに書き換えます。

これでそれぞれの名前のCustomEventが作れるようになりました。

AnimBPのEventGraphに移動。グラフ内でAddCustomEventを検索し選択。

名前をChargeStartに。

SpawnSystemAttachedを繋げ、Systemtemplateに先程作ったNiagaraSystemを入れます。

どこに出すかをアタッチするため画像のように追加して繋げます。

スプライトに出すことは設定しましたが具体的にどこに出すかを設定します。
チャージのFlipbookで使っているSpriteを開き、右欄中のSocketsの+ボタンでIndexを増やします。Locationをエフェクトの出したい位置、SocketNameChargePointにしておきます。

AnimBPに戻り、SpawnSystemLocationAttach Point Nameに先程ソケットにつけた名前を入れます。これでソケットの位置にエフェクトを出せるようになります。(多分。)

行けた。

ただ、このままだとチャージ中から別のアニメーションに遷移してもエフェクトが消えません。なので消す処理を加えます。

Spawn System AttachedのReturn Valueから伸ばし、変数を作ります。
(名前はCharging Effectにしました。)

エフェクトを止める

カスタムイベントを新規作成し、名前を前に設定したChargeStopに。
これでチャージアニメーションが終わった時に動くイベントとなります。
先程作ったCharging Effect変数をget、Destoroy Componentを出して、画像のように繋げばOK。

完成

このままだとチャージ中も動けたり、ジャンプで解除しちゃったり、チャージ開始してすぐでも攻撃できる問題がありますが、ここからはおまかせします……

自分はロックマン的な感じのチャージが好みなので、発展させていきたいところです。

ではまた。

この記事が気に入ったらサポートをしてみませんか?