アンリアルクエスト3に参加しました。
作成中に気づいたことや、困ったことなどを備忘録としてまとめました。
Blueprintも稚拙で恥ずかしいですが公開しています。
少しでも参考になったら嬉しいです。
👇最終日の生放送内で紹介していただけました。
作ったものに反応をもらえるのが、とても嬉しいです。
👇提出した動画。
1日目 玉
初級:玉を当てて壊す
はじめて使用。
気づいたこと
・ただ作るだけなら特に難しくない。
・破壊されるかどうかは当たった物体の質量(Mass)などに依存。
・キャラクターが押しても動かない。
👇この動画を参考にさせていただきました。
空中に固定
Chaosを使っているものを浮かせる方法が分からなかったので、下にFloor(Box Collision)を作成してその上に乗せた。Collisionの設定をDestructibleだけBlockで、他をIgnoreにした。
破壊
破壊できるかどうかは、ぶつける物体(ボールなど)の質量に依存している。
UQ3のテンプレートで用意されていたボール(BP_Throw)では、Collisionの質量を大きくする必要がある。SphereはNoCollisionになっているので、こっちの質量を大きくしても意味がない。
Blueprint
中級:動く的に玉を当てる
敵のブループリント。クラスはPaperCharacter。
実装
・ランダムにジャンプする。
・ボールが当たったら敵が死ぬ。
・敵に触れたらキャラクターが死ぬ。
Blueprint
上級:玉を投げる軌跡を表示
玉が飛んでいく軌跡を表示する。飛んだ玉の軌跡ではないところに注意。
下のノードを使うだけで簡単に作れる。知らないと大変だと思う。
イベント開催中に開かれているDiscordの情報共有によって存在を知る。
2日目 プレイヤーアクション
初級:二段ジャンプで輪をくぐる
キャラクターのコンポーネント(Self)を選択。
Detailsパネルにある、Jump Max Countの項目を2に変更するだけ。
Blenderで作成した。
Shift +Aのメッシュ作成>トーラスで一発だったと作ったあとに気づいた。
👇わざわざ作ったやつ。
輪を作る。Shift +Nで面の向きそろえる。
サブディビジョンサーフェス。Ctrl +Aで適用。頂点増え過ぎた。
オブジェクトモードで右クリックから、スムーズシェード。Ctrl +Aで全トランスフォーム。
UE5でコリジョン作成。
中級:空中ブランコ
実装内容
・回転の角度と時間をインスタンス編集可能にしてある。
Blueprint
上級:壁蹴り
実装内容
・壁の逆方向を向く。
・壁の逆方向上向きに速度を与える。
・同じ向きの壁に対して、連続で壁蹴りできない。
Blueprint
壁蹴りについては、Wall Jumpのコメント部分に記述している。
3日目 ギミック
初級:当たると死ぬ炎
ナイアガラでなんとなく作った。
中級:動く床
砲台の下に動く床を配置した。
処理はBP_Cannonに書いた。
上級:玉を出す砲台
実装内容
・玉が入ると玉を発射。
・キャラクターが入るとキャラクターを発射。
・スイッチにより移動。
気づいたこと
・キャラクターの設定をSet Movement ModeでFallingやFlyingにしないと、Set VelocityのZ軸方向は無視される。ここでは発射前にFallingにした。
・発射時ぶつかると飛んでいかないので、発射の瞬間は大砲のコリジョンをNoCollisionにした。
・Set Velocityによりキャラクターの飛ぶ軌跡は、Predict Projectileノードで予測できるものとは違う。飛ばす場所については実際に飛ばして試行錯誤する必要がある。飛ぶ軌跡の違いには、キャラクターのGravity Scaleが影響していそう。
Blueprint
ギミックに対してセーブ機能を作っていなかったので、移動後の状態から始まる処理を無理やり作った。
キャラクターが着地したときに発動するイベントノード。便利。
大砲でキャラクターを飛ばすときスプライトを回転させているのだが、それを止める処理などを書いた。
4日目 ステージ
初級:ステージ変更
Open Levelを使った。
中級:3ステージ以上
Open Levelを2回使った。
上級:チェックポイント
処理は、BP_PaperCharacter、MyGameInstance、WB_Title、BP_SavePointに書いている。
EventGraph
Save Player Data
構造体を使うべき。
今回はXにStageNumber、YとZに場所の情報を記録した。X方向にキャラクターを動かさなかったので。
Load player Data
タイトルのウィジェットBP。
スタートボタンと、コンティニューボタンを押したときの処理を記述している。
5日目 ブラッシュアップ
初級:1ステージに複数BGM
クリア時に音をかえた。
中級:ライティング、ポストプロセスの調整
炎の近くに配置。とってつけた感がすごい。勉強したい。
上級:輪に炎をつける
ナイアガラのShape LocationのRingで作成した。
その他
C++
勉強中なので、無理やり使いどころをつくってみた。とりあえず使うことはできた。
・スイッチで他のアクターを動かすために作った。
カスタムイベントを作ればいいだけだけど、ちょっと楽できるかなぁと。
MyActor.h
UFUNCTION(BlueprintCallable, Category= "MyActor Functions")
void MyImp(bool Play);
UFUNCTION(BlueprintImplementableEvent, Category= "MyActor Functions")
void MyPlay();
UFUNCTION(BlueprintImplementableEvent, Category = "MyActor Functions")
void MyReverse();
MyActor.cpp
void AMyActor::MyImp(bool Play)
{
if (Play)
{
MyPlay();
}
else
{
MyReverse();
}
}
ナイアガラ
👇実際には使っていない。学習のためContentExamplesの写経をしたときの記録。
1.Propertiesを選択。
2.Sim TargetをGPUCompute Simに変更。
3.Fixed Boundsにチェックを入れる。
動画編集
次回は少し編集して短くしたものを提出する。ミスを削ったり部分的に倍速にしたり。
Twitterしてます
ブログの更新をお知らせ
コメント