【Unity】3Dゲームを作ってみたい人の記録(環境構築~3Dモデルのキー操作編)
はじめに
Unityでのゲーム制作って簡単簡単って聞くけど、実際どれぐらい簡単なの?
ゲーム作るのに興味あるけど、迂闊に手を出したらヤバそうな気がする。
と思ったことはありませんか?
自分もそのうちの一人ですが、参画させてもらっているBABY JOB開発チーム内の
アドベントカレンダー参加を機にUnityに触ってみよう!とついに重い腰を上げました。
本記事は、3Dゲームを作ってみたい筆者がUnityを触ってみた記録 兼 備忘録その1となります。
有益情報を届けられるUnity開発知識はないのと、ただの奮闘記録のため手順詳細などはすっ飛ばしますので、体験レポ的な感じで読んでもらえると幸いです。
目的
- とりあえずUnityに触ってみる
- キャラクターを動かしてみたい
本記事のゴール
- Unityでゲーム制作をするための環境構築が完了
- ゲームオブジェクト(操作キャラクター)の用意
- 上下左右キーでキャラクターを動かすことができる
開発環境
- OS:Windows 10 Home
- Unity:2021.3.15f1
- .NETFramework:4.7.1
- 使用エディタ
- Visual Studio Code:1.74.0
環境構築
とにもかくにもまずはUnityをインストールします。
エディタの選定
インストールしている間に、スクリプトを書くエディタを決めます。
候補はVisual Studio と Visual Studio Code(以降VSCode)で、結論からいうと自分はVSCodeを使うことにしました。
Visual Studioを使用している人が多いみたいなので、試しにUnityのエディタに設定し使用してみましたが、起動が遅くスクリプトファイルを開くまでに約10秒ほど時間がかかりました。
待ち時間があると隙あらばネットサーフィンしてしまうので、10秒の待ち時間が1時間のネットサーフィンになっている可能性大のため危険です。
また、今回の目的に対してVisual Studioは機能過多な感じがしたのも理由の1つです。
VSCodeの場合、拡張機能導入
VSCodeに必要最低限の拡張機能を入れていきます。
- C#
- C# XML Documentation Comments
- Debugger for Unity
- Unity Code Snippets
一応、非推奨ではないほぼ同じ動作のものがあるので今回はそちらを使用。
(Debugger for Unity)
ここで問題発生。
自分の環境だとなぜかTransformなどMonoBehaviour関連の補完がきかない…。
補完機能ないって結構致命的なので半日ほど格闘したのですが、
まぁ…なくてもいいか!(敗北)
よくはないけど…
とりあえず次進みたいし、最悪エディタはいつでも変更可能なので今回はこのまま進めます。
(ちなみにVisual Studioであれば問題なく補完機能も使えます。)
今後解決したら試したことと合わせて別記事書ければいいなと思ってます。
3Dモデルの用意
自分で作成できたら楽しそうなんですが、今回はUnity Asset Storeに頼ろうと思います。
Unityが提供している公式ストアで、ゲーム制作に必要な3Dモデルやモデルに使うアニメーション、テクスチャなどを揃えることができます。
無料でDLできるものも多く、ストア眺めて作りたいゲーム考えてるだけでめちゃくちゃ楽しいです。
今回は運よく気に入ったモデルがセール対象になっていたので、購入してみました。
地形のデータは以下の無料のものを使っていきます。
(TESシリーズ好きなことがわかる人にはわかるチョイスな気がする。)
他にも3Dモデルの用意の方法はいろいろあるみたいなので、いつか触ってみたいです。
Blenderを使った本格的なモデリングは敷居が高いですが、以下のようなWebアプリで自分で書いた落書きにアニメーションを付けたりして遊ぶと楽しそう。(ラクガキ王国を思い出す…)
プロジェクトにオブジェクトを配置
先ほどDLした素材を使ってシーン内の好きなところに配置していきます。
今回は手っ取りばやく地形はデモデータで出来合いのものを使用します。
まっさらな状態から…
↓
それっぽい感じになりました。
ただ配置しただけなので、キャラクターが棒立ちですが…。
上下左右キーでオブジェクトを動かす
上下左右キーを押したら操作キャラが移動する、というスクリプトを作ります。
ここではスクリプトの記述内容は割愛しますが、やることは上下左右キーが押されている状態なのかを調べることと、左右キーでX方向・上下キーでZ方向への移動量の設定です。
キー入力を調べる方法はUpdateメソッドの実行、FixedUpdateメソッドの実行どちらも可能ですが、FixedUpdateは1秒間に50回繰り返し実行されるので入力検知にラグがでてしまう可能性があるようです。
動作の安定のため、毎フレームごとに呼ばれるUpdateを使います。
最後に、作成したスクリプトを動かしたいオブジェクトにアタッチします。
(オブジェクトに機能を付与することを、アタッチするというらしい。)
カメラをキャラクターの後ろに移動させ、追従させる
Main Camera(画面に映る視点)は自由に動かせるので、三人称視点、一人称視点、肩越し視点で作りたいゲームに合わせしっくりくる視点を設定します。
今回はMain Cameraをキャラクターの後ろに固定し、肩越し視点でキャラクターを動かせるようにします。
ここまでの成果
まだモーションを入れてないので、棒立ちのモデルが上下左右キーで動くという若干ホラーな映像ですが…
ここまでにかかった工数はざっくり30時間ほどです。
30時間が長いか短いかは人次第ですが、ポケモンのストーリー1週クリアするぐらいと考えたらそんなにしんどい時間ではないかなと思います。
個人的に時間がかかるなと思ったのは、シーン操作(視点の移動)とオブジェクト操作に慣れることです。空間を広く設定するとさらに難易度が上がりそう。
(あとストアでモデル選別してる時間とオブジェクトの複製や物理演算設定など試しに触って遊んでる時間が長かった)
せっかくセールで3Dモデル2体セットを買ったので、もう1体も使って簡単なゲームを作りたいです。制限時間を設けてもう1体からひたすら逃げ回るゲームとかだったら、自分にも作れそうな気がする。
追いかける側のオブジェクトに追従対象を指定をすることで、対象を追い続けることが可能なので、操作キャラの移動速度と追いかける側の移動速度の調整をして、他オブジェクトへの衝突判定を作成すればいけるんじゃないかな…。
さいごに
Unityを触ってみた感想をざっくりまとめます。
- オブジェクトを自分で用意するしないでかかる時間は全く違う。
- 部品の組み合わせ次第でできることが広がるのが実感できた。
- 部品さえ揃えれば簡単に画面・動作の実現ができる故に、複数人の開発はカオス化しそう。
- 使うオブジェクトが増えると、対象オブジェクトを見失う。
- Hierarchyウィンドウ内(オブジェクトを管理する一覧)が混沌としてくる。
- オブジェクトの命名規則の徹底が必要。
あと良い素材を使ったからこそ改めて思ったことは、どんなにモデルや舞台設定などがよくても操作感が悪いと途端に面白味がなくなるので、継続してプレイする気が起きるゲームって凄いんだなと。
ようやく奥が深いゲーム作りの入り口ぐらいには立てた気がしてます。
早くモーションの導入をして、キャラクターの棒立ち状態をなんとかしたいので細々と継続的に触っていければなと思います。
参考資料
楽しく学ぶUnity3D超入門講座
Unity Learning Materials
UnityのC#エディタをVsCodeにして使う設定【Windows編】
Discussion