【補足解説付き】Unity公式チュートリアル日本語翻訳【Roll-a-ball tutorial - 1. Setting up the Game】
このチュートリアルでは玉転がしゲーム用の Unity プロジェクトの作成をした後、地面となるゲームボードと、プレイヤーが操作する玉の作成を行います。
まずは新しいプロジェクトを作成してみましょう。
Unity を起動して画面右上の「New」を選択するとプロジェクトの作成画面が開きます。下記に従って各項目を入力し終えたら「Create project」をクリックしてプロジェクトを作成します。
【Project name】
プロジェクトの名前を入力します。今回は「Roll a Ball」と名付けましょう。
【Location】
プロジェクトの保存場所です。チュートリアル動画では「/Users/ユーザ名/Desktop」に保存していますがデスクトップが散らかるのでデフォルトのまま「/Users/ユーザ名」に保存して良いです。もちろんパソコンに慣れている方で、保存したい場所が決まっているのでしたらどこに保存していただいても問題ありません。
【Organization】
チュートリアル動画ではこの入力項目はありません。デフォルトでは Unity アカウント作成時のアカウント名が表示されているはずなので、そのままで問題ありません。
【Template】
2Dゲームと3Dゲームのどちらを作成するかについて、プロジェクトを作成するこの段階で決めます。今回は3Dゲームを作成するため3Dを選択します。
プロジェクトが作成されました。初期状態を確認しましょう。まずは Project ウィンドウを確認してみます。Project ウィンドウとは、ゲーム内で使用される全ての素材のリストが表示される場所です。現在 Assets / Scenes / SampleScene が存在しています。Scene とはゲームにおけるシーンのことです。ケースバイケースではありますが、たとえばゲームを起動した直後のタイトルシーンであったり、敵と戦闘するバトルシーンなど、Unity では各シーンごとに Scene を切り分けて作成します。Hierarchy ウィンドウを確認してください。Hierarchy ウィンドウでは現在選択されている Scene に含まれている内容が一覧として表示されます。初期状態では SampleScene が選択されていて Main Camera と Direction Light だけが存在していますね。
あなたのための新しい Scene を作成してみましょう。上部メニューバーから File > New Scene を選択します。
Scene を作成するための各設定項目に入力し終えたら「Save」をクリックします。
【Save As】
Scene の名前を入力します。今回は MiniGame と入力します。
【Where】
作成した Scene の保存場所を設定します。デフォルトのまま Assets を指定します。
Project ウィンドウを確認すると、左図のように、先ほど指定した通り Assets の直下に MiniGame と名付けられた Scene が作成されていますね。MiniGame を右図のように、ドラッグ&ドロップで Assets / MiniGame ではなく Assets / Scenes / MiniGame に移動します。Scene は Scenes ディレクトリの配下に保存することが好ましい作法です。チュートリアル動画では「_Scenes」と名付けられたディレクトリを作成しその配下に MiniGame を保存しています。このアンダースコアはソートのためにつけられました。これから色々な名前のディレクトリを作成していくと Scenes ディレクトリがどこにあるか探すことが困難になってきます。しかしディレクトリ名の前にアンダースコアをつけることで常に先頭に持ってくることが可能です。
MiniGame シーンをダブルクリックして開いてみましょう。
Hierarchy ウィンドウを確認すると現在 MiniGame シーンの内容が表示されています。このシーン内に私たちのゲームを作成します。まずは床となるゲームボードを作成してみましょう。そのために Unity で最初から用意されている3Dモデルである Plane を使用します。Plane の使用方法は2通りあります。
下図の左のように上部メニューバーから GameObject > 3D Object > Plane を選択する方法と、下図の右のように Hierarchy ウィンドウ上部 Create ボタンから Create > 3DObject > Plane を選択する方法です。
下図のように Plane ゲームオブジェクトを作成します。
Plane ゲームオブジェクトの名前を Ground ゲームオブジェクトに変更します。名前を変更する方法は2通りあります。Hierarchy ウィンドウで Plane 選択した状態で Enter キーもしくは Return キーを押下する方法と、Hierarchy ウィンドウで Plane をゆっくりとダブルクリックする方法のどちらでも、名前を編集するモードにすることが可能です。新しい名前として半角英字で Ground と入力したら Enter キーもしくは Return キーを押下して決定します。新しい名前に変わっていることを確認してください。
Hierarchy ウィンドウで Ground を選択している状態で画面右側上部にある Inspector タブをクリックして Inspector ウィンドウを表示します。Inspector ウィンドウには現在 Hierarchy ウィンドウで選択されているゲームオブジェクトが保持している情報を確認することができます。
Transform コンポーネントはゲームオブジェクトがシーン上のどこに配置されるのか、位置を指定するためのコンポーネントです。ゲームオブジェクトを作成した際に変な場所に放り出されていることがよくあります。そのためまずは位置情報をリセットしましょう。Transform コンポーネントの右上にある歯車マークから Reset を選択することでPosition(位置情報)が(0, 0, 0)にリセットされます。この位置は世界の原点として認識され、シーン内の全ての座標はこの原点から計算されます。ついでに Rotation(回転)も(0, 0, 0)になり、Scale(サイズ)は(1, 1, 1)となります。
Hierarchy ウィンドウあるいは Scene ビュー上でゲームオブジェクトを選択している状態で、Scene ビュー上にマウスのカーソルを乗せてF キーを押下するか、下図のように Edit > Frame Selected を選択することで、選択中のゲームオブジェクトの全体が映るように視点を移動することができます。
私たちの現在の Scene ビューを見てみると、Ground ゲームオブジェクトが原点に配置されていることを示す grid lines(目盛線)が表示されています。このプロジェクトの目的のために grind lines をオフにします。Scene ビューの上部にある Gizmos ボタンをクリックして Shoe Grid のチェックを外して、実際に grid lines が消失していることを確認しましょう。
地面となるゲームボードのサイズを変更する方法を3通り紹介します。
1つめは、Unity エディタの左上部にある Scale Tool を使用する方法です。Scale Tool を選択したら変更したい軸(x軸、y軸、z軸のいずれか)のハンドルをドラッグすることで選択中のゲームオブジェクトのサイズを調整できます。
2つめは、Transform コンポーネントの X、Y、Z のいずれかの文字の上にマウスのカーソルを移動させると左右の矢印が表示されます。その状態で左右にドラッグすることで選択中のゲームオブジェクトのサイズを調整できます。
3つめは、Transform コンポーネントの入力欄に直接、値を入力する方法です。今回は(2, 1, 2)に設定しましょう。
今 Ground ゲームオブジェクトには体積がありません。厚さを加えるために Y 軸のサイズを増やしてみても何も変わりません。Unity に最初から用意されている3Dモデルの Plane (平面)から生成されたゲームオブジェクトの場合、Scale の Y 軸は機能しません。ただし負の数値に変更した場合のみ Plane が向いている方向が逆になる、という変化がおきます。Ground オブジェクトの Transform コンポーネントの Y の値を負の数値にすると Ground ゲームオブジェクトが消えたように見えますが、下から覗いてみると下を向いた Ground ゲームオブジェクトが視認できます。
もしあなたが Plane ゲームオブジェクトを Scene 内に配置したのに視認することができない場合は、Plane ゲームオブジェクトとカメラの向きを確認して、Transform コンポーネントの Scale の Y 座標に正しい数値(基本的には 1 のはずです)を入力してください。
次は、プレイヤーとなるゲームオブジェクトを作成してみましょう。このチュートリアルでは Unity に最初から備わっている3Dモデルである Sphere をプレイヤーとなるゲームオブジェクトとして使用します。
Plane ゲームオブジェクトの作成と同様の手順で Hierarchy ウィンドウから Sphere を作成します。
Sphere の名前を Player に変更します。
生成時に出鱈目な数値が入ってしまう Transform の値を 原点に合わせます。
Fキーもしくは Edit > Frame Selected を選択して、Player ゲームオブジェクトに焦点を合わせます。ボールがどのように平面に埋め込まれているか確認できますか。
これは、ボールと平面の両方が Scene 内の同じ位置(0, 0, 0)に配置されているからです。私たちはプレイヤーとなるボールのオブジェクトが平面の上に乗っかるように移動しなければなりません。Unity で最初から用意された3Dモデルである Cube、Sphere、Capsule などの標準サイズは(1, 1, 1)か(1, 2, 1)のどちらかです。Sphere から生成されたボールの位置を、Y 軸に 0.5 上げるだけで完璧に平面の上に乗ることを我々は知っています。
Scene ビューを確認してみると Player ゲームオブジェクトが照らされ Ground ゲームオブジェクトに影を落としています。
Unity で新しく作成された全ての Scene にはデフォルトで Skybox と太陽を表現するための Directional Light が一緒に作成されています。なので私たちはデフォルトの照明の設定について心配する必要はありません。しかしながら白い球が白い背景にあることについては改善の余地があります。地面に色をつけて、プレイヤーと背景の間の色に差異をつけましょう。
モデルに色やテクスチャ(質感)を追加するためには、素材を使用する必要があります。今は素材について細かく学習することはしません。テクスチャも使用しません。標準的な素材だけを使用して、シーン内のオブジェクトに色を追加します。
最初に素材を保持しておくためのフォルダを作成します。Project ウィンドウの Create ボタンをクリックして Folder を選択して作成し、名前を「Materials」に変更します。
Materials フォルダを選択した状態で、再度 Project ウィンドウの Create ボタンをクリックして今度は Material を選択して作成し、名前を「Background」に変更します。
Material が Materials フォルダの直下に配置されていることを確認してください。これは Materials フォルダを選択している状態で Material を作成したからです。
Material を選択した状態で Inspector ウィンドウを見てみましょう。
Main Maps を確認します。最初のプロパティ(性質)の設定項目は Albedo です。Albedo の色領域をクリックすると色選択ツールが開きます。色を暗い青色に変えてみましょう。今回は RGB 値を(0, 32, 64)に設定します。
Inspector ウィンドウの最下部に表示されている Material のプレビューで色合いを確認しましょう。もしプレビューが左図のように表示されていない場合は最下部の Material の名前(今回は Background)の箇所をクリックすることで右図のようにプレビューが開示されます。
Ground ゲームオブジェクトに質感を与えたい場合は、Project ウィンドウで素材を選択して Scene ビューの Ground オブジェクトにドラッグ&ドロップするだけです。今プレイヤーが操作するボールのオブジェクトは濃い青色の上に立っていますね。
このチュートリアルの後半で私たちを助けることになるであろう変更をもう1つ加えましょう。プレイヤーにとってより良い照明を与えるために、Directional Light(太陽光)の向きを調整します。Hierarchy ウィンドウから Directional Light を選択し、Inspector ウィンドウの Transform コンポーネントの Rotation(回転)の Y 軸の値を 60 に設定します。
今、私たちにはプレイヤーとなるゲームオブジェクトと、地面となるゲームオブジェクトがあります。今回の作業分を保存しておきましょう。上部メニューバーから File > Save Scenes を選択するか、ショートカットキーとして command + S を押下することでセーブをすることができます。Unity のフリーズなどで作業が無駄にならないようにできるだけ小まめにセーブはしておきましょう。