シンプルなアクションゲームを作ってみようの第10回です。
今回はキャラクターが移動するゲームの舞台を作成していきます。
前回はカメラがキャラクターを追いかけるようにしました。
シンプルなアクションゲームを作ってみようの他の記事は
シンプルなアクションゲームを作るのを通してUnityの使い方を学ぶカテゴリです。
から参照出来ます。
ゲームの舞台を作成する
今回作成するゲームの舞台はプリミティブな図形を使って作っていきます。
プリミティブな図形とは、Unityで元々用意されているCube等のオブジェクトの事です。
ゲームの舞台を配置する親のゲームオブジェクトを作成
ゲームの舞台をヒエラルキーにどんどん追加していってもいいんですが、どうせならゲームの舞台全体をまとめる親ゲームオブジェクトを作成し、その中に舞台を作った方が楽です。
それは管理しやすいというのもありますが、ゲームの舞台を全部同時に移動や回転をしたい場合は親のゲームオブジェクトに対して行うだけで、子のゲームオブジェクトが全て親にしたがって変化するからです(子のゲームオブジェクトは親のゲームオブジェクトの相対位置や回転になっている為)。
親のゲームオブジェクトを作成します。
ヒエラルキーウインドウ内で右クリックからCreate Emptyを選択し、名前をEnvironmentとします。
EnvironmentのインスペクタでTransformの右の3つの丸を押し、Resetを選択してリセットします。
これでゲームの舞台の親のゲームオブジェクトが出来たので、後はゲームの舞台に使用するゲームオブジェクトをEnvironmentの子要素として作成していくだけです。
これから作成していく舞台とまったく同じものを作る必要はありませんが、同じように作った方がこの後の記事でも読み進めやすいかもしれません。
全体の床を作成する
まずはStage1シーンのゲームの床を作成しますが、これは既にPlaneとして作っているのでこれを使います。
PlaneをマウスでドラッグしてEnvironmentの子要素に移動させ、名前をWholeFloorとします。
WholeFloorのインスペクタでTransformのScaleのXYZを全て2にします。
Cubeで床の作成
次にCubeを使って普通の床を作成していきます。
Environmentを選択し、右クリックから3D Object→Cubeを選択し、名前をFloorとします。
Floorを選択した状態でCtrl+Dキーを2回押し、Floorを3つにします。
Floorは以下のようにTransformを設定します。
Floor(1)は以下のようにTransformを設定します。
Floor(2)は以下のようにTransformを設定します。
これらを設定するとシーンビューで以下のようになります。
Floorは地面として使うのでGroundレイヤーを設定しています。
坂を作成する
Floorを作りましたが、Floorに上る事が出来ません。
そこで坂を作ってFloorに上れるようにします。
坂の形状はUnityのプリミティブ図形では存在していないので、スタンダードアセットにある坂のプレハブを使用して坂を作成します。
プレハブとは?
プレハブはゲームオブジェクトにコンポーネントを取り付けたものです。
これをヒエラルキーにドラッグ&ドロップしてゲームオブジェクトとして使用したり、スクリプトを使ってプレハブからインスタンス生成して、シーンに登場させることも出来ます。
プレハブは、色々な機能を取り付けたゲームオブジェクトをあらかじめアセットとしてProjectウインドウの中に用意しておくものという感じです。
なので同じ機能を持ったゲームオブジェクトを大量に使いたい時に便利です。
坂のプレハブはAssets/Standard Assets/Prototyping/Prefabs/RampPrototype04×02×02.prefab
を使います。
これをEnvironmentにドラッグ&ドロップしてEnvironmentの子要素に配置し、名前をSlopeとします。
Slopeを選択し、Ctrl+Dキーを押して複製します。
SlopeのインスペクタのTransformは以下のようにします。
Slope(1)のインスペクタのTransformは以下のようにします。
ここまででシーンビューでは以下のような感じで表示されます。
マテリアルを設定する
次にFloorにマテリアルを設定します。
マテリアルはゲームオブジェクトの素材を決定するものです。
マテリアルを入れるフォルダをAssetsフォルダ内にMaterialsという名前で作成します。
Assets/Materilasフォルダ内で右クリックしCreate→Materialを選択し、名前をFloorとします。
Floorマテリアルを選択し、インスペクタでAlbedoの横の白色の部分を押し、色を緑色に変更します。
ヒエラルキーのFloorゲームオブジェクトを選択し、Shiftキーを押しながらFloor(2)ゲームオブジェクトを選択するとFloorからFloor(2)までのゲームオブジェクト全てを選択出来ます。
離れているゲームオブジェクトを複数選択したい場合は、Ctrlキーを押しながらゲームオブジェクトを選択する事で複数のゲームオブジェクトを選択することも出来ます。
その状態で、FloorマテリアルをインスペクタのAdd Componentボタンの少し下あたりにドラッグ&ドロップします。
こうすると今選択したFloorの3つのゲームオブジェクト全てに同じマテリアルを適用出来ます。
個別のゲームオブジェクトに適用したい場合は、マテリアルをヒエラルキーのゲームオブジェクトにドラッグ&ドロップしてもいいですし、ゲームオブジェクトのインスペクタのMesh RendererのMaterialsのElementの+を押してマテリアルを追加する事も出来ます。
Floorにマテリアルを設定したのでシーンビューでは以下のような感じで表示されます。
カメラの距離を変更する
坂や床ゲームオブジェクトを設置したことで、カメラがうまくキャラクターを写せない時もあります。
そこでMain Cameraの設定を少し変更します。
少し上からの視点になりました。
実行して確認する
ゲームの舞台が出来たので、キャラクターを移動させて坂を上って床を歩けるか確認してみましょう。
上のようになりました。
終わりに
今回はゲームの舞台を作成しました。
次回は作ったゲームの舞台に物理的なマテリアルを設定していきます。