2016年4月29日金曜日

第五回UE4ぷちコン 「アイドルマネー 愛の錬金術師」で工夫したこと


カメラ制御

アイドル候補との戦いのとき
カメラは「正対したとき」「叩いた瞬間」「倒れたとき」と
三つの状態があります。

アイドルごとに大きさが違ったり倒れるモーションを変えたりしてるので
カメラはそれぞれ調整できるようにする必要があります。

そこで今回は、ChildActorコンポーネントとしてカメラアクターを三つ持たせることにしました。



それぞれのChildActorコンポーネントに識別タグをつけて
Set View Target with Blendでカメラを切り替えてます。
カメラコンポーネントを使ってないのは、Set View Target with Blendのためです。




サイリュームの動き

サイリュームはインスタンシングメッシュを使い
マテリアルのWorldOffsetで左右に振ってます。
モデルは適当に作った三角柱メッシュです。



マテリアルはこんな感じなのですが
今回あまり考えず、結構テキトーに作ったので、あんまり参考にならないかもしれないです。


PerInstanceRandomノードを使えば、インスタンスごとにランダムな値が取得できるので
ライトの色をひとつづつ変えたり、動きの周期に個体差をつけたりできます。
https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/ExpressionReference/Constant/


モデルの首ふり

お札で顔を叩いたら顔が左右に揺れるようになってるのですが
これはモーションファイルは使わずに
アニメーションBPでTransfrom (Modify) Boneノードの
ローテーションに値を入れることで実現してます。



アイドルのマウスによる選択

マウスカーソルで選択したアイドル候補はリムライト的なものが付与されます。


これはPlayerController取得して、ConvertMouseLocationToWorldSpaceで
マウスの指している位置や方向を取得し、LineTraceForObjectノードで
当たっているアイドル候補モデルを取得します。

当たってるモデルが存在したら
SkeltalMeshのSetRenderCustomDepthでカスタムデプスを有効化します。




そして、ポストプロセスでカスタムデプスが有効になってる部分に対し
カメラベクトルと法線の内積をとって、それが90度になるほど色がつくようにしてます。

下のマテリアルがそれです。
上半分ぐらいがカスタムデプスに対する処理で、下半分はカーソルの表示処理を同時に行ってます。




高速移動の表現

操作キャラは瞬時に移動するのですが
高速移動している感を出すためにモデルを伸ばす処理と、集中線の表示をしてます。



モデルを伸ばす表現は、移動している方向ベクトルをマテリアルにパラメータとして渡し
それと法線の内積をとり、進行方向と逆になるほどWorld Offset Positionに
後ろ方向ベクトルを入れてます。


集中線はポストプロセスです。
だいたいこんな感じになってますが、ポストプロセスでやる意味は
正直あんまりないので詳しい説明は省きます。

自分は素材を作るのはめんどくさいと感じるのですが
シェーダーやマテリアルいじるのは大丈夫なので、無理やりこういうので実現しがちです。




お金

ビンタするごとにお金が空中に舞いちるのですが
これもマテリアルのWorld Position Offsetに値を入れて
ヒラヒラと見えるようにしています。

UI

UE4のUMGっぽくない感じになるように3Dっぽく傾けたり
マテリアルを工夫してアニメーションさせたりしていますが
ちょっと自分のセンスの無さが出ててつらい部分ですね。

4.11から、UserInterfaceのマテリアルにScreen Positionが追加されてるので
3Dぽくすること以外にも何か面白いUIの表示ができるかもしれません。






第五回UE4ぷちコン 「アイドルマネー 愛の錬金術師」応募


UE4のぷちコンというコンテストに応募して、最優秀賞をいただきました。

「街の人たちを金の力で愛に目覚めさせた後
アイドルグループを結成し、即日ライブを開催。

観に来てくれたファンからお金を荒稼ぎし
その荒稼ぎしたお金をつぎ込んで
本命のグレイちゃんを、特大の愛で目覚めさせよう」

という、インパクト重視のちょっとぶっ飛んだゲームにしました。




最初は街の人を札束で叩いていくアクションゲームの予定でしたが
作ってるうちに色々思いついて仕様が増えていき、今の形になりました。



今回使用したアセットを紹介します。

舞台となる街は、UE4ランチャーのラーニングタブにある
プラットフォーマーゲームのものを使いました。無料です。
そこそこ品質が良く、動作も軽いです。




ただし、地面や木などは、アップで見ると厳しかったため、マテリアルを変更してます。
これも自作ではなく、ShowDownサンプルや、Blueprintサンプルから移植してきました。




お金のテクスチャはLoot Packという有料アセットを使ってます。
このアセットは今回のゲームにピッタリだと思って買ったのですが、
結局お金のテクスチャしか使わず。




アイドル候補たちのモデルとモーションの多くはmixamoのものを使用しました。
mixamoのモデルは、UE4にインポートするとき
モデルが壊れるものがあって使用を断念したものもいくつかありました。





最後のラストアイドルには、UE4界のアイドル、Grayちゃんを使わせていただきました。
http://rarihoma.xvs.jp/products/graychan/




Grayちゃんに持たせてる拳銃はこちらの有料アセットを使用してます。
なんで拳銃を持たせたかというと、グレイマン用の無料で手に入るモーションが
銃を持ってるものばかりだったので仕方なく持たせました。


エフェクトはInfinityBladeEffectsのを何個か使用しました。
ハートのエフェクトは他の応募作品でもたくさん使われていましたね。


曲はフリー音楽素材/魔王魂さんの曲を使わせていただきました。
歌つきの曲もあって助かりました。
http://maoudamashii.jokersounds.com/


効果音は効果音ラボさんのを使わせていただきました。
http://soundeffect-lab.info/



たくさんのアセットのおかげで今回のゲームは完成しました。
アセット作者の皆様に圧倒的感謝です!

+.