ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

アンリアルクエスト4上級編の模範解答を読む その3

引き続き、アンリアルクエスト4上級編の模範解答を読んでいる。
ウォールラン中に壁を手に付く処理が難しい。手を付く座標の取得までは分かったのだが、そこからが難しい。
アニメーションBPで処理し、RigでTwo Bone IKを行っているというところまでは分かったが、そもそもアニメーションについてはほとんど触っていないため、今回はちょっとお手上げ。改めてアニメーション部分の勉強をしてから見直す。
次にボムを投げる処理。
ボムを投げた場合に予測される放物線を計算するのが大変そうだなと思っていたら、Predict Projectile Path By TraceChannelという軌跡のパスを取得するノードが用意されていた。こんなものまで用意されているとは。
ボムを投げる処理は、アニメーション内にあるNotifyで行っていた。モンタージュ化される前の元の方で。どこからSpawnBombが呼び出されているか分からなくて苦労した。

アンリアルクエスト4上級編の模範解答を読む その2

引き続き、アンリアルクエスト4上級編の模範解答を読んでいる。
ウォールランになるかの判定は結構複雑。
まずジャンプして床との距離が十分あるか判定し、次に左右に壁があるか、前回とは違う壁か、十分な速度が出ているかと判定して、やっとウォールランとなる。
床や壁との判定にレイキャストをしているのだが、デバッグ用の描画設定があって、どうチェックされたか可視化できるので分かりやすい。
ウォールランできるとなったら、カメラの制御、キャラクターを落ちないようにして、キャラクターを傾けて、銃を見えなくしている。

アンリアルクエスト4上級編の模範解答を読む

アンリアルクエスト4上級編の模範解答を読み始めた。
上級編ということで難易度が上がっている。
自分が見たことのないブループリントノードが出てきているので一つ一つ調べながら読み進めている。
今回は Sequence。処理を順番に行うというもの。
ヒストリアのブログに最初に知っておきたいBlueprintノード集として解説されていた。
historia.co.jp
この動作を確認するためにPrint Stringを使っていて、デバッグ表示が新しいものほど上ということに気がついた。以前も勘違いしてたと気付いたのにまた忘れてしまっていた。

アンリアルクエスト4中級編模範解答その2

引き続きアンリアルクエスト4中級編の模範解答を読んでいる。
ということで気づいたことをメモ。
・デリゲートはメンバ関数の呼び出しらしい。Set Timer by Eventで一定時間ごとにデリゲートを実行、つまりメンバ関数を呼び出すことができる。これで1秒ごとのカウントダウンを実装していた。
・UIのアニメーション
ウィジェットデザイナーの下の方にアニメーションボタンがあり、そこでアニメーションを作成できる。アンリアルクエスト4ではスケールと透明度をアニメーションさせている。
このデザイナーとグラフやイベントグラフとビューポート、アニメーションなどUIを切り返るボタンが上だったり下だったりウィンドウのタブになっていたりと配置がいろいろな場所になるので気づきにくいことが多い。まあ、慣れなんだろうけど。
・ゴール演出
パーティクルを出し、プレイヤーの向きとゴール用のカメラに変更
Set View Target with Blend でカメラを変更している。New View TargetにはActorを指定する。
そのActor内にカメラがあるとそのカメラになるようだ。複数あったらどうなるか試してみたら、最後に追加したものになった。
・スライディング
スライディングのアニメーションをモンタージュ化している。モンタージュ化とはブループリントからアニメーションを細かく制御できるようにする仕組みらしい。
移動はLaunch Characterで進行方向にセットしている。また Use Separate Braking Friction をセットして摩擦で減速するようにしているらしい。セットしなかったらほとんど移動しなくなった。

これで一通り、中級編の内容を見終わった。
理解がちょっとふわっとして曖昧な部分もあるけれども、なんとなく実装方法は分かったと思う。
とはいえ、実際に自分が実装するとなると、このサンプルを何度も見直すことになるのだろうけど。
でもこれを見れば参考になると分かったのは一歩前進。

アンリアルクエスト4中級編の模範解答を読む

アンリアルクエスト4の中級編の模範解答を読んでいる。
また途中で、気づいたところまでをメモ。
・ジャンプパッド
 自分では実装するときにはキャラクターに上方向の力を加えるかなと思っていたら、キャラクターには Launch Character というそのものずばりの機能があることを知った。他にもこういった便利な機能がありそう。
 ジャンプパッドのグリッドのマテリアルはテクスチャかと思ったら、マテリアルグラフで実装されているものだった。このマテリアルはアンリアルクエスト4とは違うフォルダにあったが、これは標準で用意されているものなのかな。ちょっとどこにあるかは分からなかった。
・的に当てると扉が開く
 扉にActorを参照する配列があり、そこに対象となる的を追加する。
 BeginPlayで、的が壊れたときのイベントを追加。そのイベント内で全部壊れたか判定。全部壊れたら扉が開くアニメーションを再生。
・秒数をUI表示
 UIはウィジェットブループリントを利用。PlayerControllerで作成されている。
・開始時のカウントダウン
 カウントダウンはデリゲートで表現とコメントにあったが、デリゲートがまだ分かっていない。
 文字の表示はウィジェットアニメーションというのを使っていたが、このアニメーションもよく分かっていない。

今週の予定

日曜日は今週行うことを決める日。
先週はなんとか完成させることが出来たとはいえ、作業にかけた時間は予定を大幅にオーバー。
休日だから出来たが、今週は平日となるので、そうはいかない。
前回はUnityだったから、今回はUnreal Engineにしようかと思ったところ、アンリアルクエスト4の中級、上級編の実装方法を見ていなかったことを思い出した。
ということで、今週はアンリアルクエスト4の中級、上級編の実装方法を調べることにした。これならばなんとかなりそうだ。時間に余裕があれば調べてわかったことを使ったちょっとしたものを作っても良いかもしれない。

うさぎジャンプゲー


今週のテーマだった強制横スクロールのワンボタンアクションゲームを作った。
うさぎ年なので、走っているうさぎが罠をジャンプして避けるというもの。
これだけシンプルなゲームで、アセットもフリー素材を使ったものにもかかわらず、作り上げるのに1週間かかった。
作りながらいろいろなところで躓き、そのたびに検索して調べたりしていたので、時間がかかったが、いろいろな知見を得ることが出来た。
本を読んでわかったつもりになっていても、実際に手を動かして作ってみるのは重要。いろいろな気づきを得ることが出来る。
今年から1週間単位で何かを作っていくというのを始めたが、このペースだとかなり厳しそう。
冬休みの間だったので、毎日時間を取ることが出来たが、これが平日だったら無理だったろう。
次はもっとシンプルなものにして、毎日の作業を時間を計りながら行い、時間切れになったらそこで終わりとしよう。