えにあです。
前回までで、Unityの環境構築と、エディタの使い方を覚えるためのレゴの最初のチュートリアルを行いました。
しかし、最初のチュートリアルではどうやってゲームを作り始めれば良いかは全く分からないので、もう少し手を動かすチュートリアルをやっていきます。
Unityには、Unity Learnという公式のチュートリアルでゲームの作り方を学べる教材が用意されています。
今回は、一番簡単そうな玉転がしアプリの作り方を学んでいきます。
learn.unity.com
NOTE:
Unity公式の動画は最新バージョンのUnityで作られているわけではないので、実際に試してみると画面が違うことが多々あります。 このブログではversion 2019.4.21f1 Personalでの画面で説明していきます。
目次
イントロダクション
Special Game Objectを集める roll a ballというゲームを作っていきます。
どのようにゲームオブジェクトを作るか、ゲームオブジェクトへのコンポーネントの追加の仕方、位置やプロパティの設定などを学んでいきます。
このゲームではプレイヤーが、ゲームボードの上をボールを転がしていきます。
キーボードを使ってボールを移動させます。
プレイヤーが動かしたボールで、Pickup GameObjectを集めていくようにします。
いくつのオブジェクトをピックアップしたかカウントし、全部集めたらゲームが終了するようにします。
アセットをインポートする必要はありません。
立方体や球などの、Unityが用意する標準のアセットを使います。
まずはゲームと最初のゲームオブジェクトをセットアップしていきます。
プロジェクトを作成しよう
まず、新しいプロジェクトを作成しましょう。 新しいプロジェクトを作成するには、トップメニューで「ファイル」->「新しいプロジェクト」を選択します。
すると、ホーム画面が表示されます。
新しいプロジェクトの名前を「Roll a ball」にします。
プロジェクトの保存先ディレクトリを任意の場所に設定します。
2Dプロジェクトと3Dプロジェクトのどちらにするかを選べますが、ここでは3Dプロジェクトにします。
「作成」を押して新しいプロジェクトを作成します。
新しいプロジェクトが作成され、空のシーンが表示されました。
空のシーンに何かを追加する前に、シーンを保存します。
ヒエラルキービューのSample Sceneの横の「⁝」を右クリックして「シーンを別名で保存」を選択します。
D:\Unity\RollABall\Roll aball\Assets\Scenesの下に、MiniGameという名前で保存します。
シーンの名前がMiniGameに変わりました。
ゲームボードを作成しよう
次にゲームボード、つまりプレイフィールドを作っていきます。 Unity標準の平面(Plane)を使います。
平面(Plane)を作成するには、トップメニューから「ゲームオブジェクト」->「3Dオブジェクト」->「平面 」を選択します。
あるいは、ヒエラルキービューからも作成できます。
次に、作成した平面オブジェクトの名前を「Ground」に変更します。 オブジェクトの名前は、オブジェクトを選択するとインスペクターの一番上に表示されています。 現状はPlaneになっていますね。
Groundに変更してEnterを押してみましょう。 ヒエラルキービューの名前もGroundに変わったことが分かると思います。
次に、インスペクターのTransformメニューをクリックして「リセット」を選択します。
これで、このゲームオブジェクトはシーンの(0, 0, 0)座標に配置されます。 (0, 0, 0)はオリジンポイントと呼ばれ、このシーン内の全ての座標は(0,0,0)を基準に計算されます。 座標の値が変わったことを確認しましょう。
現在、シーンにはグリッドが表示されていますが、チュートリアルの目的のためにグリッドをオフにします。 公式の動画ではギズモメニューからグリッドをオフにしていますが、場所が変わったようです。 グリッドの表示変更メニューを出します。
不透明度を0に変更します。 すると、シーンからグリッドが消えます。
次に、平面のサイズを変えてみましょう。
サイズを変えるにはヒエラルキービューの上にある、スケールツールを選択します。
するとシーンビュー内で平面を選択した時に、下の画像のように赤青緑の線が表示されるはずです。
この線を引っ張ると、平面のサイズが変更されます。
なお、平面には厚みがありません。そのため、通常Y方向のスケールは常に1になっています。
しかし、Y軸をマイナス方向に引っ張ってしまうと、平面が上下ひっくり返り、透明に見えてしまうので注意しましょう。
スケールの変更は、インスペクターの「拡大/縮小」に直接値を設定することでも変更できます。
プレイヤーオブジェクトを作成しよう
今回プレイヤーオブジェクトに使うのは、Unity標準の球体オブジェクトです。
ヒエラルキービューから「+」->「3Dオブジェクト」->「スフィア」を選択しましょう。
オブジェクトの名前をPlayerに変更して、位置を(0, 0, 0)に設定しましょう。
球オブジェクトが選択された状態で、トップメニューから「編集」->「選択したものを中央に」を選択しましょう。
シーンビューでShift + Fでも構いません。
すると、球が半分地面に埋まってしまっているのが分かると思います。 これは、平面も球も(0, 0, 0)の座標に存在するからです。
なので、平面より上に来るように球を移動させましょう。 Unity標準の立法体や球オブジェクトは、標準サイズが決まっています。 1×1×1、または1×2×1です。
なので、プレイヤーオブジェクト(球)をY軸方向に0.5ポイント上にずらせば、ちょうど平面上に来ます。
インスペクターで、球のY軸方向の位置を0.5に変更しましょう。
シーンビューを見ると、球が平面の上に来たのがわかりますね。
ところで、平面には球の影が落ちていますね。
Unityシーンを作ると、デフォルトのスカイボックスとディレクショナルライトが用意されています。
そのため、デフォルトのライティングについて気にする必要はありません。
スカイボックス:
デフォルトの背景のことのようです。ディレクショナルライト:
太陽からの光を表現するように、単一方向から平行に降り注ぐ光のことのようです。
平面に色をつけよう
さて、このままでは白い平面の上に白い球があるので、見づらいですね。
そこで、平面に色をつけていきましょう。
オブジェクトに色、またはテクスチャをつけるにはマテリアルを利用します。
テクスチャ: テクスチャ (Texture) とは、物の表面に触れた際の質感、感触、外観。
ここでは、マテリアルについて詳しく説明しません。テクスチャも利用しません。 標準のマテリアルを利用して、シーン内のオブジェクトに色をつけるだけです。
マテリアルを格納するためのフォルダを作りましょう。 トップメニューから「アセット」->「作成」->「フォルダ」を選択します。
プロジェクトビューに新しいフォルダが表示されるので名前をMaterialsにしましょう。
Materialsフォルダが選択されている状態で、トップメニューから「アセット」->「作成」->「マテリアル」を選択します。
プロジェクトビューを見ると、Materialsフォルダの下に新しいマテリアルが作成されているのが分かります。
このマテリアルの名前を「background」に変更しましょう。
backgroundマテリアルを選択してインスペクターを見ると、Main Mapsの一番上にアルベドという項目があるのが分かります。
アルベド
アルベド(albedo)とは、天体の外部からの入射光に対する、反射光の比である。
0以上、1前後以下(1を>超えることもある)の無次元量であり、0 – 1の数値そのままか、0 % – 100 %の百分率で表す。 よくわかりませんが、色を表す項目のようです。
アルベドの白い四角の部分を押して、色を変更します。
ここでは、RGBを0, 32, 64に変更しましょう。
インスペクターの下部にプレビューが表示されています。濃紺ですね。
マテリアルを平面に反映させるには、プロジェクトビューでマテリアルを選択して、シーンビューの平面にドラッグアンドドロップするだけです。
すると、平面が先ほど指定した濃紺に変わります。
これでプレイヤー(ボール)が目立つようになりました。
ライティングを変更しよう
最後にプレイヤーに対するライティングを変更します。
ヒエラルキーでディレクショナルライトを選択します。
インスペクターで、回転のY軸を60に変更します。
シーンビューで光の当たり方が変わったのを確認しましょう。
これでプレイヤーオブジェクトと、プレイグラウンドの作成は完了です。
今回はここまで!