【9月】制作コンテンツ
はじめに
4月からスタートしたコンテンツ制作第5弾
「1年後には手元に12種類のコンテンツがある」を目標に月ごとの制作物を紹介します。先月コロナの為製作はお休みし、1ヶ月ぶりの投稿になります。
9月制作コンテンツ紹介
今作はゲームセンターお馴染みのUFOキャッチャーをモチーフにしたコンテンツ、「Arcade」を作成しました。
現実ではお金が必要ですが、こちらは気が済むまでコスト無しに挑戦出来ます。今作は今までのテイストとは違った、UE5特有のリアルな質感を心がけました。
操作方法はとてもシンプルで、横と奥へ進む2つのボタンを駆使し、ボタンを離すタイミングを見極めるのみである。
アームは物理シミュレーションを元に、景品のコリジョン(当たり判定)
との判定で上手く掴めたり掴めなかったりする。
上手くつ掴めた時は非常に気持ちいので是非ともチャレンジして欲しい。
Blenderの活用
今作は実機の寸法に出来る限り合わせたかったのと、画としてのディティールを統一したかった為、いつもより細かくモデリングをしている。
ハイポリなデータではないが、綺麗に作ろうとすると大変で、特にベベル後のトポロジーの処理に時間を要した。
ブループリント講座
今回もUE5の仕組みを薄く紹介。
UE5では、挙動の制御などをブループリントに記載して構築する。
言わばその名の通り設計図だ。
アーム制御
まずはアームを開く処理。
カスタムイベントを用いて自分のオリジナルの命令文を構築出来る。
「タイムライン」で0~40まで4秒で上がる数字を生成し、アームの軸のY回転に代入している。つまり、4秒で40度傾く処理がここで行われている。
アームを閉じたいなら、「タイムライン」で40~0となる数字を生成し、角度に代入することで実現可能だ。
UFOの高度制御
こちらはUFO本体が景品を掴む為に高度を落とす処理。
前述したアームの処理と基本構造は変わらず、タイムラインで生成した数字をUFO自体のZ軸、つまり高さの数値に代入しているだけである。
UFOの移動処理
個人的に今回の鬼門にあたる部分。
景品を掴む為に横移動と奥へ移動したのち、元居た場所に戻らなければならない。移動距離が毎回変わるので、移動した分だけ数値を戻す処理が必要だった。
細かい説明は省くのだが、移動時のタイムラインと同時に経過時間と同じだけ数値の上がるタイムラインを設定している。UFOが移動して停止するまで時間を作成した変数に代入し、その数値分戻る為のタイムラインを再生させている。つまり3秒移動したら、同じ速度で逆方向に3秒移動して元の位置に戻している。
絶対もっとスマートな方法があるはず。。
今作の経緯
物理シミュレーションを駆使したコンテンツは今までも作って来たが今回は2つの物体を使った「physics constraint」用いて作成した。
オブジェクト個々に対しての重力や、衝突した物体に対しての反応ではなく、1点を軸にしてバネのような動きをさせることが出来る。
今回の課題として、リアルのアームの動きをどう再現するかが鬼門となった。取れそうで取れない、どうすれば獲得出来るか、と試行することが本来の持つエンタメ性であり、このコンテンツでも必須の要素だ。
アームを回転して物体を挟む事は簡単だが、物体の構造を無視した強烈な挟み込みとなり、コリジョンを貫通して景品が吹っ飛ぶこととなる。
挟み込んだ際に、形状に沿った状態で圧力を物体にかけるため、前述した「physics constraint」で軸となるオブジェクトにアームを片側ずつ関連付けた。通常の親子付けとは違い、影響を受ける数字に幅を持たせることが出来、基準の数値に戻るための強さを設定出来る。
軸を90度回転させても、アーム自体は物体の形状のに合わせ、可動域分の角度で止まりる、そして軸と同じ角度になろうと設定した強さ分の圧力が物体にかかる。この設定のおかげで程よくつかむことが出来、UFOキャッチャー特有の動きを再現している。
おわりに
一言で言うと色々間に合ってない。。
景品のラインナップも色々と構想を考えていたが、前作のお相撲さんと、blenderでの馴染みのモンキーくんである。余談だがスザンヌって名前があるらしい。見た目にこだわろうとしたあまり、モデリングに時間がかかってしまい肝心のライティングやリフレクションの設定が全く出来てない。
今回ue5.2を使ったのだが、5.1からの変更点も多くかなり手間取った…
また、ue5からインプットアクションの代わりにエンハンスドインプットを推奨されている、どちらも様々なプラットフォームで操作入力を可能にし、コンフィグ等で操作をカスタム出来るようにする項目なのだが、後者は準備がちょっと面倒…今作のから使おうと思っていたが次回に持ち越しとなってる。。
この記事が気に入ったらサポートをしてみませんか?