アンリアルクエスト5に参加しました

こんにちは、オボロです。
アンリアルクエスト5に参加したのでnoteにまとめました。

追記
(2023/05/31 01:00) UEのバージョン、使用したアセット、2,3,4日目の内容を追記しました。

アンリアルクエスト5とは

詳細はリンク先をご覧ください。
簡単に言うと、毎日出る課題をこなしてゲームを作ろう!って感じです。
今回のテーマは「剣を使って敵を倒す」ゲームでした。

本題:完成した作品

早速ですが完成した作品の動画です。
UEのバージョンは5.1.1、使用したアセットは「Isometric World : Sky Temple」と「Blink and Dash VFX」です。

1周間という期間の中で精一杯やれたと思います。

振り返り

各日の課題をツイートやメモで振り返ります。
その日の考えをそのまま載せています。

1日目

初級→UQ1でやったこと、ほぼそのまま。Begin Overlapだと歩いて刀が触れるだけでもダメージが発生するので、サンプルに最初からあったIsAttack のBlooleanで判定した。
振り上げた時にもダメージが発生するので、振り下ろした時だけにできないか調べる。
Hitだと上手くいかなかったので理由を調べる。
中級→UQ1と同じ。

当日のメモ

2日目

初級:敵を全滅させたら勝ち
敵の数が3体と仮定して
考察A→「レベル上の敵の数」をカウントして、「0以下」になったら勝ち
考察B→「倒した敵の数」をカウントして、「3以上」になったら勝ち

考えた上で「Unreal Engine 敵を全滅させるとクリア」でググったら↓
https://fpsunknown.com/archives/22050
出ました、答え

敵が倒れて、消滅までしないとクリア判定にならないのはネックかも…
ボスならHPが0になった瞬間にクリア演出入れたいね~
雑魚戦なら十分か…

当日のメモ

リンク先を参考にして、判定の呼び出しはUQ1でやったSet Timer by Eventで実装しています。
私は「全滅させたら」の部分は考察Aの方法がやりやすいと思ったのですが、Discordでは考察Bの方法で実装されている方もいました。
AはWave制で無限湧きとか、Bなら無双系の撃破数ミッションとかで使い分け出来ると思うので、Bも今後試したいですね。

3日目の進捗紹介コーナーでピックアップされてました。嬉しい~!

3日目

前転
〔前転〕ボタンが入力された時、
攻撃していない&前転していない&空中にいない&方向キーが入力されていれば、
ローリングのモーションを行う&一定時間で一定距離を方向キーの入力方向に移動する(できれば重力の影響を受けるようにしたい)

前転=回避だと思ったので、プレイヤーがダメージを受けない方法も考えた
A:当たり判定(コリジョン)を無くす
B:当たり判定はあるが、攻撃を受けてもHPが減算されないようにする
→1.ダメージを0倍にする
→2.IsRollingというBloolean関数を用意して、プレイヤーがダメージを受ける処理の前にブランチで判定する


調査
discord「ルートモーション」「前転にはアニム通知ステート(ANS)を利用して無敵フレームを追加」
https://youtu.be/uefWYX3g5yE
https://historia.co.jp/archives/20586/

動画でアニメーションモンタージュの基礎
前転=回避だと思うので無敵時間を実装したい
武器の当たり判定含めて参考になりそうな動画があったので明日以降やりたい
移動中だけ前転したい(止まっていたらしゃがむ等)が上手くいかなかった
前転中はジャンプできないようにする=IsRollingのBlooleanで判定してたけど、canmoveでできる? Jumpは含まれていない?
→攻撃中はJump入力はどうなっている?

当日のメモ

HP
→敵に設定した時の逆。あるいはUQ1と同じ。ただし振り上げの多段ヒットはなくしたい

当日のメモ

配布されたサンプルに、攻撃中移動しないための「Can Move」というイベントがありました。(ジャンプもできなくなる)
前転中にジャンプしないためにこのイベントを使おうとすると、前転自体が移動であるため使用不可能でした…

4日目

回復アイテム
UQ1のコインと同じ
collisionに接触→destroy&HP増加
ただし何も考えずに増加させたら限界を超えて回復してしまいそう
A:変数HPにMaxHPを設定(できる?)
B:ブランチで条件分けして、一定HP以上では回復しない
→デフォルトのHPが1000で、現体力が800で、300回復するアイテムに触れたら?
いちいち場合分けが面倒では

https://zenn.dev/posita33/books/ue5_starter_cpp_and_bp_002/viewer/chap_01-04_bp-item_heart

リンク先のようにFunctionを使ったけど、CustomEventでできたと思う。

Function→(CustomEventをまとめたもの?詳細は調べる)
Cast→(Cast先のBPしか持たない変数の処理のため。)詳細:https://zenn.dev/daichi_gamedev/books/unreal-engine-tutorial/viewer/blueprint-cast-to


discord「マイナスのダメージという処理」

回復のイベントはプレイヤー? アイテム?
→プレイヤーの方。アイテムの持つHealValueで様々なパターンに対応できるようになる?

(回復のイベントで)CastToのobjetは何を繋げば良いのか?

また現在HPをPrintStringで確認可能に
敵の多段ダメージが深刻なことが判明…
https://youtu.be/2_-XSijHfFQ
↑の5:00あたりからのやり方で実装したい

当日のメモ

ファンクションからカスタムイベントで作り直してます。
またCast ToではなくGet Actor Of Classを使用しました。

5日目

エフェクト
・事前の考察→ほぼ無し! UQ1では似たこともやってないので…
https://youtu.be/3PcsI16UNDc
この動画で1から作った。
とりあえず敵へのヒットエフェクトはOK。
それから回復アイテムに、無料配布のアセットからナイアガラエフェクトを付けたけど、もっと狭い範囲のエフェクトにしたい。
やり方調べたけど、うーん…
ナイアガラのシステムだと一々設定の必要がありそうだし、
BP上だと、調べたサイトと同じノードが無い…(4と5の違いか)
ひとまず保留。
あとTrail(剣の軌跡)のエフェクトがサンプルにあったので、それも使えそう。上の動画の人が軌跡についても解説してた。
候補→剣の軌跡・プレイヤーが受けるダメージ・前転

SE•BGM
キューを作って、BGMのループやSEの音量がランダムになるように出来た


前転中に攻撃すると、その後ジャンプと前転が出来ない不具合を修正しました

当日のメモ

まとめ

noteを書いている現在から振り返ると
・UQ1をやっていたことでスムーズに進められたり自分で考察できた部分が多かった
・最後まで当たり判定がおかしかったので直したい(出来そうな方法を紹介してる動画は見つけた)
・敵が攻撃中に倒すと、倒れたあとも武器の攻撃判定が残るのは、崩れ落ちる演出のあたりで武器のコリジョンをEnableにすれば直りそう?
・「九里江めいく」さんのYouTubeが参考になった
『わからない!!!』を放り投げて進む勇気が必要

おわり

今回は以上となります。
次は中級をやりたいと思います。
ではノシ

いいなと思ったら応援しよう!