[UE4][ue4jam2018]草の挙動実装の反省

概要

ue4jamで作ったミニゲームの、草ギミック実装についての反省。

三行まとめ

・草を生やす挙動をMaterialでやろうとして時間かけすぎた上に結局できなくて草

・とりあえず単純な案で実装してみたら十分な見た目になって草

・提出寸前まで草が仮データのままだったことに気づかなくて草

前提

・ゴルフのミニゲーム

・ボールが草地に乗っているとき、草を操作してボールを押せるようにしたい

・その際、草を生やして「草によって押されている」とわかるような視覚表現をしたい

やった事

・草メッシュのZ方向スケーリング

・ユーザの指示で草が伸びる表現

・ボールのXY座標によるスケーリング

・ボールの足元にある草が伸びるように、ボールから離れた位置にいくとスケール0に近づける

・スケール0になってさらに離れると、後述のジャンプを行う

・ユーザー入力によるスケーリング

・ボールが草地に近いときに入力受付

・入力があるとき、徐々にスケール1に近づける

・入力がないとき、徐々にスケール0に近づける

・地形によるスケーリング

・地面に草が生えていない座標では、スケール0にする。

・後述のジャンプ時にLineTraceして、物理マテリアルの種類から判断させた

・草メッシュのジャンプ

・やりたい表現としては、ボール付近だけ草が生えればよい

・Landscapeの草地部分全てに草メッシュを仕込む必要はない

・最初にボール付近の地面の下に草メッシュをスポーンさせ、ボール付近に草Meshが移動してくるようにした

良かった点

・やりたい表現はできた

・草がそのままスライドする見た目も最初に試したが、やはリ不自然だった

・とりあえず生やすだけでも何が起きているかは察してもらえた模様

悪かった点

・上記のスケールや再配置を、草マテリアルの処理で全部済まそうとして試行錯誤していたら一日が終わった

・World Position Offsetで頂点移動させていけば、1つのメッシュだけで無限に草生やせるんじゃね?と考えたんや…

・移動だけじゃなくて、ある程度遠い頂点は消さないと三角形が伸びるんや…

・色々盛り込んでノードが複雑になりまくったんや…

・時間をかけすぎていることに気づき、あきらめたんや…

・草の生やす範囲について、あまりスケーラブルでない実装になっている

・例えば範囲を広げたい場合、草メッシュ自体の大きさ変更と、上図における点線の密度調整のすり合わせが必要

・草が伸縮するが、横方向に押している動きはしていない

・提出日に草が仮データのままという気づいた

UnrealEngine4マテリアルデザイン入門の付録の草データのままだった

・特にライセンスに関する表記は無かったので、これで提出するのはヤバいと判断

・ローポリな見た目に合わせてBlenderで自作した

なんさんのUdemy講座は神

今後こうしたい

・短期間で結果が必要な場合は特に慎重に目標を選択しよう

・チャレンジは必要だが、設定するところを間違えると悲惨なことになる

・焦り対策

・許容

・焦りながら実行してもうまくいく手法を採用する

・克服

・そもそも焦らないよう強くなる

・調停

・許容策を控えておき、規定時間のみチャレンジする

・仮データを差し替えることを作業単位として記録しておく

以上