初級① 的を壊せ
1.TargetMeshの「On Compornent Begin Overlap」でOverlapしたActorがProjectileかを判定。
2.(「Is Move」は初級②の的を動かした時にProjectileがぶつかったときに的の動きを止めたかったために追加。)
3.「Particle System Compornent を追加」で「P_Explosion」を発生させる。
(初級②の的を動かした際に的のある位置でエフェクトを発生させたかったのでTargetMeshの「Relative Location」の位置を渡した)
4.「Set Hidden in Game」でエフェクトを出したらは的を非表示にする。
(提出動画では、上の「Set Hidden In Game」で消えると思ったら、「New Hidden」にチェックを入れ忘れて消えておらず。また、エフェクトの表示もないままに、すべて消えてしまったので失敗してた。)
5.「Delay」でエフェクトが消えた頃合いを見計らって、「Destroy Actor」。
初級② 的を動かせ
1.「StartPoint」、「EndPoint」、「IsMove」の変数を定義。「StartPoint」、「EndPoint」はインスタンス編集可能にすることでレベルに配置してから一つ一つ動かす距離を変更できるようにした。
2.「Tick」からタイムライン「Move」に接続。「Move」のタイムラインは↓と設定することで、1秒間かけて 0 → 1 → -1 → 0 と「MoveRange」から出てくるように設定。
として、その後「Lerp」に通してって思ったけど、そもそも「Lerp」って「Alpha=0の時は100%A、Alpha=1の時は100%B」なわけだから、Alphaがマイナスになるっておかしくね?となったので、正しくは↓のように1秒間かけて、0 → 1 → 0 のようにすることが正しいと思います。
3.「Is Move」の値を判定して、TargetMeshの「Relative Location」に「Lerp」のRetrunValue接続することで、動く的を実装。
初級③ ゴールを作成せよ
やろうとしたこと
- 金のリングの中を通過することでゴールと判定する。
- ゴール後はキャラクターの動き、マウスやキーボードからの操作を停止させる。
- ゴールした時に画面上にメッセージを表示させる。
- 操作を停止させることで、AimしながらゴールするとAimを解除できなくなるので、強制的に解除させる。
1.モデリングモードを使ってTorusのメッシュを作成。
2.Torusのマテリアルには、Starter Contentにある「M_Metal_Gold」を設定。
3.Actorを親としたブループリントクラス「BP_Goal」を作成。
4.ゴールとなる真ん中の穴の大きさに合わせて薄くした「Box Collision」を追加。
5.「Box Collision」の「On Compornent Begin Overlap」を作成。
6.Overlapしたのが「BP_UE4Player」か判定し、正しければ処理を続行させる。
7.(初級④で時間を計測する際に、ゴールした時に時間の増加を止めるフラグとして、「Is Play」にFalseを設定する。)
8.「BP_UE4Player」から「Chracter Movement」を取得し、「Disable Movement」してキャラクターの動きを止める。ここ、たぶんなくともいい感じ。ゴールした瞬間すぐ止まっちゃうんだよねw
9.「BP_UE4Player」から操作を取り除くため、Player ControlerのIndex 0(プレイヤー1)の「Disable Input」する。
10.「BP_UE4Player」に強制的に「FreeRun」状態に移行させるカスタムイベントを作成しておいて、そのイベントを呼び出す。
11.ゴール用のUIを作っておいて、それを表示させる。
初級④ 秒数が増える仕組みを作成せよ
やろうとしたこと
- PrintStringでいいってなってたけど、UIまで作っちゃった。
- ゴールしたら時間の増加を止める。
1.Begin Playイベントでプレイ中のUIを表示
2.Tickイベントで「Is Play」がTrueの間、「Play Time」に経過時間を増加させる。ゴールしたら「Is Play」が「False」になるはず。
3.Play中のUIに、TextBoxを配置。
4.配置したTextBoxにバインドさせて、「BP_ThirdPersonGameMode」から持ってきた「PrayTime」を設定。「Time Seconds to String」を使うといい感じの書式に変換してくれるから便利。
初級⑤ ステージを作成せよ
適当にそれっぽく配置。
初級⑥ 当たると死ぬ棘を作成せよ
1.モデリングツールを使って、棘のメッシュを作成。
マテリアルは棘部分が「M_Metal_Burnished_Steel」、台座部分が「M_Concrete_Grime」で共にStarter Contentにあるもの使用。
2.Actorを親としたブループリントクラス「BP_Spike」を作成。
3.棘のメッシュそのものの「On Component Hit」を作成。
4.Hitしたのが「BP_UE4Player」か判定し、正しければ処理を続行させる。
5.「BP_UE4Player」のMeshのCollisionを「Physics Only」に「Set Collision Enabled」で設定する。
6.さらに「BP_UE4Player」のMeshに「Set All Bodies Simulate Physics」で「New Simulate」をTrueにすることで全身物理シミュレーションさせる。(言葉がおかしい)
7.2秒間のDelayでのたうち回らせた後、「Execute Console Command」で「RestartLevel」することでリスタートさせる。
初級+中級少し
おわりに
UEに2022年6月から触れ、というかゲーム開発というものに触れ始め、ぷちコンに参加し、今回、オンラインであったけれども初のアンリアルクエスト参加したわけで、自分自身思ったよりも手を動かすことができたなーと実感を持つことができた。
振り返ってみると、実際にはうまく実装できていないこともいろいろあって、ベストプラクティス的な作りではないかもしれないけれど、手を動かすことができたってところは本当に良かったなと感じている。
こうしてブログにまとめることで、復習と理解を深めることができたなと思う反面、言語化の難しさも痛感。
それでも大事なことだなと思うので、また機会があればまとめていきたいなと思う。
初級すべてと中級もいくつかクリアすることはできたので、残りのクエストもまた今度試してみよう。