[UCDD]ユニティちゃんドライバーダービーができるまで
これはunity1weekのユニティちゃんドライバーダービー(UCDD)が完成するまでの経緯を記したnoteです。無駄に長いです。
1日目 - 月曜日(アイデア出し)
実家でアイデア出し。お題は「かえす」。以前のunity1weekで内容が決まらず参加を断念したので、1日目でなんとか企画内容を決めたいところ。
とりあえず2つほど案が出る。
①ベーコンエッグトーストをフライパンでひっくり返す物理ゲーム
技名とか作ってオリンピック種目の感じにしたら面白いのでは?というアイデア。
技名は演出とともに読み上げソフトで読み上げる想定だった。
②シチュエーションを表示してマウスクリック・ドラッグなどで逆転(ひっくり返す)ゲーム
①より②の方が面白いと思ったが、シチュエーションのアイデアが多数浮かばない&シチュエーション別の実装が必要になって間に合う気がしなかったので断念。①に決定する。
2日目 - 火曜日(①作成)
タイトルは「Frying Bacon Egg Toast」。卵を乗せて焼いたトーストを「Fried Egg Toast」と呼ぶようなのでそれと飛ぶのを掛けている(おしゃれ)。
↓できたもの
いかんせん絵面が地味すぎて不安に。しかも物理ゲームは思ったより難しく、コリジョンが抜けたりして調整に時間がかかっていた。トゥーンシェーダーを使っているので少しはおしゃれに見える。(絵作り対策)
3日目 - 水曜日(①-ちゃぶ台版作成)
ちゃぶ台にしたら絵面も良くなって面白くなるのでは?と思い付きちゃぶ台を作り始める。
↓できたもの
絵面は多少マシにはなったが、「だからなに?」という感想である。
しかもそれと引き換えに余計な問題が色々出てきた。
ちゃぶ台がひっくり返ってない(ちゃぶ台なのに)。無意味にひっくり返すのも嫌だ。
作るのが案外大変。アセット探し&コリジョン追加など1つ1つに時間がかかる。
良い技名が思いつかない(持ち味が一つ減る)
ここまで来ると食材ごとぶん投げた方が楽しそう(本末転倒)
これらによって①は完全に頓挫。
やはり②で作り直すか悩んでいる時に「もうユニティちゃんでバックドロップ(ひっくり返す)するだけでいいかも。。。?」と思いつく。
さっそく無料のバックドロップ素材を探す。
...がそんなものはない。
わざわざバックドロップモーションを作って無料で提供するような変聖人はいないのだった。
ちなみに有料モーションならアセットストアに存在した。
二度と使わないようなアセットにこんなお金は出せない。何とかしたいと根気よく探していると...
聖人が...いた!
動画内のドライバーのモーションを流用できるなら何とかなりそう。
どうやらモーション素材はVRChatのアバター用の模様。VRChatのことを良く知らないので色々調べて環境を整える。
VRChatのアカウントを作って、素材の説明書通りにアバターをアップロードしようとすると...
謎のエラーが発生。どうやらある程度VRChatで遊ばないとアップロードできないようだ。
そもそもVRChatをしたいわけではないので他の方法を探す。
アバターの仕組みをよく調べたらAnimationControllerでモーションを動かしているだけのようだった。
もしかしたらこのモーションをそのままユニティちゃんで動かせばいけるのでは...?さっそく試してみる。
4・5日目-木・金曜日
リングとそれっぽい背景の素材をSketchfabから入手して配置。カメラから見えない素材は簡単に削除できるものは削除(処理負荷対策)。カメラから見える範囲にポイントライトを付ける。ポイントライトはそのまま使うと負荷が高いので描画結果をベイクするように設定。またリングのロープの一部はカメラの邪魔になったのでにゃんにゃんメッシュエディターで削除。あとはドライバー中の影など綺麗に見せたかったので品質設定など変更した。
とにかくUCDDはモーションや見た目のクオリティを上げたかった。(というかそれしか持ち味が無かった)
時間に余裕もないので優先順位を決めて実装する。
■優先度高(必須)
・移動処理、ボタン入力処理など基本的なもの
・モーション作成(ドライバーの受け側、攻撃側・受け側立ち上がり)
・敵AI作成
・ゲーム処理(ドライバーの回数を競う)
・リザルト表示
・音(unity1weekの評価対象だし雰囲気にも大きく影響する)
■優先度低
・タイトル
・観客
・その他の要素
・移動処理作成
キャラクターにCapsuleCollisionとRigidBodyを付けてお互いが重ならないように。キャラクターはX方向にしか動かせず、リング外に出ないようX値を制限。後退はモーション速度を負の値にして実現している。
・モーション作成
残念ながら「あの技モーション」には受け側のモーションは提供されていない。始めはUnityの標準のアニメーションウィンドウで作成しようとしたが、使い方が全く分からずイメージ通りのモーションをさせられない。
調べたところUnityのアニメーションツールはいまいち使い勝手が悪いようだった。そこで以前購入していたアセットのことを思い出す。
使い方を動画で学んで使ってみる。公式動画が存在するのは大変有難い。
多少癖はあったが受け側のモーションや立ち上がりのモーションを何とか作成できた。
流石に空中で回転するアニメーションを作るのは難儀なので、攻撃側のキャラクターに受け側のキャラクターをアタッチ(親子関係に)することで一緒に動いてもらうことにする。
なおアニメーション中はキャラクターが重なるのでRigidBodyを無効にしている。しかしUnityではRigidBodyを完全に無効にする方法が無いため、仕方なく必要なタイミングでRigidBodyを削除、追加する仕組みとした。
・敵AI作成
AIは移動、投げをほぼランダムに動かしているのみ。立ち上がり時に確率で投げを発生させるなど多少調整はしている。
6日目-土曜日
・ゲーム処理作成
タイマとドライバー数のカウントをしているくらい。少し物足りなさを感じたので攻撃が当たるとタイマが増える仕組みとラリアットを追加した。
・リザルト作成
リザルトは「あの技モーション」の作者様が作成したEmote用モーションを複数の中からランダムで再生している。立ち位置までの移動は少し手数がかかっている。
・音
効果音にも手を入れていて、ボリュームを大きくしたり、無音を削除してタイミングを合わせたりなど編集を行っている。使ったツールはAudacity。
7日目-日曜日
・タイトル作成
タイトル画面どうするか。。。とりあえずUIでタイトルを表示してみる。
くらいの勢いでタイトルロゴと略称(UCDD)が決定した。
・観客追加
本当は試合中に応援したりしてにぎやかしになる予定だったが、そこまで実装できなかった。
どうしようもなくてプレイヤーと一緒に踊りだした観客だったが、静と動のギャップが出て結果的に良かったと言える。
・その他の要素
BGM選択や試合開始アニメーションなどを実装した。本当はレフリーも入れたかったが入らなかった。ちなみに音量調整スライダーはリリース後に入れた。(間に合わず)
おわりに
・大変だったこと①
3日目までの迷走している状態が一番苦しかった。確信が持てるアイデアが出るまでは動かない方が良かった気がする。(まぁ良いアイデアが簡単に出るなら苦労しないが...)
・大変だったこと②
最後までモーション遷移のバグが出て苦労した。主な原因はモーション遷移開始後に、前のモーションのアニメーションイベントが発生して状態が変化してしまうことだった。モーション遷移についてはスクリプトを完全に分けてきちんと制御する必要を感じた。
・完走した感想
記事を書いて見返してみると全てが行き当たりばったりだったことが分かる。今回は運良く完成できたのかも知れない。もう少し安定したゲーム作りをしたいところ。
・反省点
モーション作ったところで満足してしまってゲーム性がシンプルになりすぎた模様(コメント付くまで気が付かなかった)。
爪が甘かったな...
まぁ何とか完成したのでヨシ!
記事内の使用アセット(ゲーム内で使用していないもの)
mottainai.mp3 … 音声さん
②のイメージ図 … いらすとや
ベンチ … Bench
目玉焼き&トースト … Fried egg sandwich
ベーコン … Bacon
フライパン … Simple Object 7: Frying Pan
皿 … Elegant Empty Kitchen Dish - 3D Model
寿司下駄 … sushi
寿司 … (3Dモデル)お寿司
お盆 … 【3D素材_fbx】お盆
急須 … 南部鉄器 急須
ちゃぶ台 … 【VRC,3Dモデル】ちゃぶ台
テクスチャ … Hand Painted Seamless Wood Texture Vol - 6、Textures FREE