アンリアルクエスト3 実装振り返り その2

この記事は約7分で読めます。

アンリアルクエスト3の実装.後半の課題はギミック,ステージ,ブラッシュアップ

クエストテーマ~ギミック~

■初級 当たると死ぬ炎

これも前々回から(前はトゲだったけど)の続投.エフェクトにカプセルで当たり判定をつけて処理.

Cascadeのエフェクトを頼れば炎はすぐ出せるけど,いい加減Niagaraも覚えたいので今回はテンプレートをもとに1から作成.
近づくとぜんぜん炎という感じではないのだけど,それっぽくはなっているのでよし.

あとはこのエフェクトとカプセルによる当たり判定,攻撃判定をつければこの課題はクリア.

後の課題でつけたSEのほうはいつものスターターアセットのもの

■中級 動く床

動く床に関しては前回,前々回から引き続き続投.タイムラインを活用したいつものやつ.

レベルデザインのためにちょっと改良し,Arrowを使って移動経路が見えるようにした.

Construction Script の設定は初期設定に便利で,クエスト2やぷちこん16などでも構造物や,エンドレスランナーのギミックでも活用していた.
今回はTimelineの速さを変更したり,Arrowの向きや長さを調整することに活用している.
Movescaleに移動先,Local1に相対原点座標が入っているのでこれをもとにArrowを表示させている.
ついでに色も変えられる.もちろん実行中は表示されない.

欠点は長さしか変更できないので,大きいフロアだと少々見にくい.今回はこれを色の変更で可視性を調整した.場合によってはSizeを変えることで太さを変え,逆計算で長さを再計算させる手法もありかもしれない.

■上級 玉が飛び出てくる砲台

砲台の実装はサンプルについていたBp_Playerの投擲スプリクトを流用.
打ち出す砲弾は上で作った火の玉を改変したもので子ブループリントとして作成.
これにより炎BPの当たり判定の処理をそのままに,投擲用の部分だけを追加している.

砲台の本体部分はカメラ用のメッシュをキューブにのっけて砲台っぽい感じに配置.
Set Timer by Function Nameによって砲弾を射出し,発射間隔は調整可能.

エフェクトが偶然軌跡を描くようになっていてキレイなのでまあ満足.

クエストテーマ~ステージ~

■初級 ステージ変更

今回はサンプルのステージのほかにもう一つステージを追加し,計2つのステージを用意.タイトル画面も一応作ってはいたが提出動画の時点ではお蔵入りになった.タイトル画面を作る場合,サムネイルも作らないといけないので,時間の都合上そこまで手が回らなかった.

なのでゴールにたどり着いたら2つ目のマップをロードする実装に.
2つ目のゴールは1つ目のマップのスタートに戻るように名前を割り当てる.

ゴールの旗は前回のクエスト2のものを流用拝借.色は青くしてある.
この旗の根元に入ると何秒か後に,Nameにわりあてた次のステージに移行する仕組み.

■中級 ステージを3つ以上作ろう (今回は実装できず)

課題では3つ以上必要なのだが,今回は取り組めず2つだけ.
横スクロールのレベルデザインは初めてやったので,発想力が全然足りなかった.
視点が固定されるので,視界に移る範囲にも注意し,どこに進めばよいのかをはっきりプレイヤに伝える必要があり,きちんとした作品はこのあたりよく考えられているのだなと思いました.

1つ目のステージはサンプルマップにクエストで必要なギミックを配置したもの.

後述のチェックポイントが3つ配置され,左下から右に行ってチェックポイントでUターンし,左端から壁を登ってゴールというコース.砲台からの炎と火の輪くぐり,ブランコの部分が難所.
しかし,倒れながらちぇっくポイントを改修するという裏技がうまれてしまったため,
クリア自体は結構簡単.

2つ目のステージは空中アクションを一応イメージして作成.
移動床と移動式の的によるアスレチックコースをコンセプトにした.
また第1ステージとの連続性を想起させたかったので,スタート地点は第一ステージのゴール位置にしている.

2ステージ目の輪くぐりの前にチェックポイントを配置する予定だったが,リスポーンがうまくいかないことがあるのでひとまず削除.Z座標が一定以下になるとリスポーン判定としている.
床がないのも不具合の原因の可能性があるため,ラグドール化したあとも落下しきらないように途中までは床を伸ばしている.

■上級 チェックポイント・リスタートを作ろう

初めはPlayerStartをSetActorLocationで動かしてやろうと実装したものの,このアクタはムーバブルにできなかったためこの方法ではうまくいかない.そもそもRestartLevelすると位置が元に戻ってしまうため,別の方法を取ることにした.

チェックポイントはゴールと同様の旗で,ふれるとその場所のTransformをBP_Playerに渡すことでリスポーン位置を保持する.
そしてチェックポイントを有効化すると旗の色が緑にかわる仕組み.

プレイヤー側はリスポーン時に保持しておいたTransformに新たなPlayerを生成し,コントローラのPossessによって所有権を移行.これにより新たなプレイヤーに操作がうつり,その後古いプレイヤーは削除されるようにした.リスポーン直後のBeginPlayにもTransformの保存を入れているので,チェックポイント通過で位置が更新される前は,スポーンした位置がリスポーン地点となる.

しかし,前述のようにリスポーンに失敗することがあるので,この実装では不十分な可能性がある.
(リスポーン失敗が確認できたのは第2ステージだけ,空中であることか,複製したことなのか,
何らかの原因がありそう.)

クエストテーマ~ブラッシュアップ~

■初級 1ステージに複数のBGMを入れよう

今回はチェックポイントを一定数獲得した際に,BGMが変更されるようにした.
変更されるといってもこのPlaySound2dを使う実装では,このノードに出力ピンがないことから,
一度再生した音源を操作することはもうできない.
そのため,別の音源を追加で再生することでBGMの変更を実装することにした.

今回は第一ステージのスタートすぐの旗を取るとBGMが再生され,壁のぼり前の旗でBGMに変化が加わることとした.

またPlaySound2Dの性質などもあり,途中で課題がBGMに限らず複数のサウンドを使用することに変更となったため,輪くぐりや的の破壊,チェックポイントの通過の際にSEを鳴らすように設定している.

実際は,音声操作を行う際はAudioコンポーネントを利用する方がよいらしい.

今回の音源には以下のサイトのものを利用させていただきました.

■中級 ライティングとポストプロセスを調整しよう (今回は実装できず)

この課題も今回実装することができなかった.
しかし実装方法に関しては前回のクエスト2において既に学習しているものである.


実装手段がわからないというよりかは,2Dアクションでの使いどころが分からなかったという感じだろうか.

今回はマテリアルなども全体的にチープになってしまい,前回のクエストのリッチなゲームというポイントをあまり生かすことができなかったのは反省点とすべきだろう.

■上級 輪に炎をつけよう

これはジャンプでくぐる輪っかに炎のエフェクトを配置すれば実装することができそうである.
炎自体で輪をつくったり,あるいはエミッターを調整しトーラス型の炎にする方が見た目はきれいであるが,今回は時間の都合もあり,元の輪っかに炎を配置する方向とした.

くぐる輪のBPを複製し,8つの角にNiagaraの炎を配置.
炎自体の大きさである程度隙間が埋まることを想定.
これは横スクロールで使用するため完全に円形に配置する必要は必ずしもないが,パースの観点から斜め方向からだと輪を視認することができるので,画面奥側にも炎を配置しておく.

また炎の当たり判定用に,中央上部と下部に当たり判定のカプセルを追加しダメージ処理を行うことにする.これにより炎に接触するとダメージになるので,輪は炎無しのものよりも大きく設定してある.

制作物

ということで最後に完成品を再掲

コメント

タイトルとURLをコピーしました