Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、Terrainで山、草、木を作る方法、人型の3Dモデルをキーボードで動かす方法、Box Colliderで当たり判定のスクリプトを追加する方法などを紹介する【Windows 10、Unity 5.4に対応。C#のコードを追加】。
Unityで3Dゲームを作るまでのいろいろな処理を解説する本連載「ゲーム開発初心者のためのUnity入門」。前回の「Unityで3Dアニメーションを作成・再生するための基本」までで、さまざまな3Dモデルにマテリアルを適用して配置したり、見え方を変えたりする基本的な方法に加え、3Dモデルをアニメーションで動かす基本も紹介した。だいぶ3Dゲームに近づいてきたのではないだろうか。
3DゲームやVRの醍醐味(だいごみ)はリアリティのある世界の中を3Dキャラクターが自由に動き回れることだろう。山や林や、草、湖を作り、大草原の中で3Dキャラクターが自由に動き回ると、作った側もワクワクするのではないだろうか。
今回は、まず地形エンジン「Terrian」を使って自然の風景を作成し、その風景の中で3Dキャラクターを自由に動かす処理を解説する。いよいよ、Unityの本領発揮で面白くなってくる。3Dキャラクターを自由に動かす処理には、「ThirdPersonController」という三人称の視点で3Dキャラをキーボード操作できるようにできる“動き”のアセットが使われる。
さらに3DキャラクターがTerrainから落ちた場合は、また一からシーンを開始できるようにしてみよう。そのためにはスクリプトを書く必要があるが、ほんの少しなので、怖がらずに試してみてほしい。
まずはプロジェクトの作成だ。Unityを起動してメニューの「NEW」から新しいプロジェクトを作成する。今回は、「TerrainSample」という名前のプロジェクトを作成する。
次に、Scene画面に地形を作成していく。地形は、作り方さえマスターすれば、必ずしも「本稿の通りの地形を作らねばならない」というものではない。読者自身が自由な地形を作っていくといいだろう。
Unityメニューの「Assets」→「Import Package」→「Environment」と選択する(図1)。Unity 4の時にはあった、「Terrain Assets」という項目はなくなっている。Terrainに関するファイルは、一式まとめて「Environment」に入っている。
「Import Unity Package」の画面が表示されるので、「Import」をクリックする(図2)。
Projectの「Assets」の中に「Standard Assets」というフォルダが作成され、その子要素として「Environment」があり、中に「Terrain Assets」フォルダが見える(図3)。
これはこのまま置いておいて、次にHierarchyの「Create」→「3D Object」→「Terrain」と選択する。すると、Scene画面とGame画面に図4のように表示される。
図4のScene画面上でマウスの右クリックをして、画面をドラッグしながら、Game画面を見て、地形を調整する。図5のように表示されるよう「Main Camera」の位置を調整しておく。
次にHierarchy内の「Terrain」を選択し、Inspector内で図6の赤で囲ったアイコンをクリックして山を作っていく。全ての範囲に山を作成するのは大変なので、3Dキャラクターが動き回れる範囲程度に山を作っておこう。図6の一番右端の「歯車アイコン」をクリックすると分かるが、デフォルトではTerrainの「Width」「Length」は500ピクセル、「Height」は600ピクセルとなっている。もっと広くしたい場合は、この値を変えるといいだろう。
図6の赤で囲ったアイコンをクリックして「Terrain」の上をなぞっていくと山が作成される。「Terrain」の表示があまりにも小さいと山の起伏が確認しにくいので、マウスホイールで「Terrain」をある程度まで拡大し、場所を移動させる場合は、Scene画面全体をドラッグして場所を変える。図6を見ると左から3個が山を作成する場合に使用するアイコンだ。山の高さを調整したり、山を滑らかにしたりする場合に使用する。いろいろ各自が触ってみて、実際の効果を試してほしい。
Hierarchyから「Terrain」を選択して、トランスフォームツールの移動アイコンで、3本の矢印を表示させて、Game画面で確認しながら、自然の位置を調整するといいだろう。
最終的には図7のように「Terrain」オブジェクト上に起伏ができ山が作成される。
Copyright © ITmedia, Inc. All Rights Reserved.