はじめに
2月から本格的にUnityを用いたゲーム開発をはじめ、なんとか2か月間で完成にこぎつけました。ここでは少し躓いたときに参考になった技術や記事の紹介をおこなっていこうと思います。
制作したゲーム”Record Attacker”
制作したゲームはこちらをダウンロードして遊ぶことができます。
ゲーム内容:キャラコンを駆使して最速でゴールせよ!様々なギミックを乗り越えオンラインランキング1位を目指せ!
とても単純ですね。今回はマ〇オ64のようなRTAが楽しそうなアクションゲームを作るということと個人制作特有の安っぽさを無くしたいという目標を掲げて開発しました。制作者2人のオンライン共同開発でした。
参考になった技術
GitHubの使い方
オンライン共同開発ではほぼ必須のGitHub。今まで読んできた記事の中で一番分かりやすかった@TakumaKurosawa さんによる"GitHub実践ハンズオン"
難易度別に分けられているため、ほとんど躓くことなく環境構築をすることができました。
オンラインログイン・ランキング
個人制作でのオンラインログイン・ランキング実装に最適なNIFCLOUDのmobile backend(NCMB)。
サンプルの説明が丁寧で、制作途中に組み込んでもスムーズに実装することができました。
美しいScene切り替え
Scene切り替えがお洒落だとゲーム全体の一体感が増します。フェードイン・フェードアウトを用いたScene切り替えを以下の記事を参考に実装しました。
TPS視点の深度設定等
CinemachineのFreeLookCameraを用いるとマウスを使って自由に見渡せるカメラワークを作成することができます。そのFreeLookCameraの説明をしてくれている記事がこちら。
特定のオブジェクト同士の衝突判定を無くす
壁ジャンプ用のColliderを新たにキャラクタに設定したため、もとのCupsule Colliderと接触判定が常に出て通常モーションが反映されないことがありました。その問題を解決する方法がレイヤでの設定。こちらの記事を参考にしました。
AnimationClipの詳細
外部のアニメーションをAnimator Controllerで自然に遷移するためにAnimation Clipで下準備する必要があります。以下の記事
ではAnimation ClipのInspector内の数値ごとに説明がされているので体感的に理解できます。
Animator遷移の優先順位
キャラクタを操作する上で地味だがかなり気になる問題点。例えば、走りの切り返しとジャンプはどちらも走りモーションから遷移するが、優先順位は切り返しの方が早いと自然な操作性となる。遷移の優先順位含めたAnimator Controllerを詳しく説明した記事がこちら。
足元の土煙
ビジュアルが大幅に向上する土煙。こちらの記事を参考にしました。
先行入力
格ゲーではないとはいえ、先行入力はあった方が操作性がかなり向上します。参考にした記事はこちら。
指定フレーム分キー入力をリストで格納して判定する手法で実装しました。
アニメーションに応じてコライダの大きさを変化
今回用いたアニメーションはジャンプ時に体を丸めるため通常のコライダサイズでは地面着地時にアニメーションでは着地できそうなのにコライダがぶつかって着地できない問題点が生じた。そのため、アニメーションによってコライダのサイズを随時変更する必要がある。その際に参考になった記事はこちら。
コライダサイズを調整することで理不尽なゲームミスを減らせるので重要な要素の1つです。
あとがき
NCMBを用いたランキング機能実装の際に調べても出てこなかった問題点や壁ジャンプの実装など自分で書くと役に立つ人がいるかもしれない内容は今後記事にしようかなと考えています。