猫でもわかるUnity入門(第9回 玉転がし作成 その1)

f:id:enia:20210228230354p:plain えにあです。

前回までで、Unityの環境構築と、エディタの使い方を覚えるためのレゴの最初のチュートリアルを行いました。  

しかし、最初のチュートリアルではどうやってゲームを作り始めれば良いかは全く分からないので、もう少し手を動かすチュートリアルをやっていきます。

Unityには、Unity Learnという公式のチュートリアルでゲームの作り方を学べる教材が用意されています。 今回は、一番簡単そうな玉転がしアプリの作り方を学んでいきます。
learn.unity.com

NOTE:
Unity公式の動画は最新バージョンのUnityで作られているわけではないので、実際に試してみると画面が違うことが多々あります。 このブログではversion 2019.4.21f1 Personalでの画面で説明していきます。


目次

イントロダクション

Special Game Objectを集める roll a ballというゲームを作っていきます。
どのようにゲームオブジェクトを作るか、ゲームオブジェクトへのコンポーネントの追加の仕方、位置やプロパティの設定などを学んでいきます。

このゲームではプレイヤーが、ゲームボードの上をボールを転がしていきます。
キーボードを使ってボールを移動させます。
プレイヤーが動かしたボールで、Pickup GameObjectを集めていくようにします。
いくつのオブジェクトをピックアップしたかカウントし、全部集めたらゲームが終了するようにします。

アセットをインポートする必要はありません。
立方体や球などの、Unityが用意する標準のアセットを使います。
まずはゲームと最初のゲームオブジェクトをセットアップしていきます。

プロジェクトを作成しよう

まず、新しいプロジェクトを作成しましょう。 新しいプロジェクトを作成するには、トップメニューで「ファイル」->「新しいプロジェクト」を選択します。

f:id:enia:20210228173409p:plain

すると、ホーム画面が表示されます。
新しいプロジェクトの名前を「Roll a ball」にします。
プロジェクトの保存先ディレクトリを任意の場所に設定します。
2Dプロジェクトと3Dプロジェクトのどちらにするかを選べますが、ここでは3Dプロジェクトにします。
f:id:enia:20210228173521p:plain

「作成」を押して新しいプロジェクトを作成します。

新しいプロジェクトが作成され、空のシーンが表示されました。
f:id:enia:20210228174120p:plain

空のシーンに何かを追加する前に、シーンを保存します。 ヒエラルキービューのSample Sceneの横の「⁝」を右クリックして「シーンを別名で保存」を選択します。 D:\Unity\RollABall\Roll aball\Assets\Scenesの下に、MiniGameという名前で保存します。
f:id:enia:20210228174634p:plain

シーンの名前がMiniGameに変わりました。 f:id:enia:20210228175405p:plain

ゲームボードを作成しよう

次にゲームボード、つまりプレイフィールドを作っていきます。 Unity標準の平面(Plane)を使います。

平面(Plane)を作成するには、トップメニューから「ゲームオブジェクト」->「3Dオブジェクト」->「平面 」を選択します。

f:id:enia:20210228175902p:plain

あるいは、ヒエラルキービューからも作成できます。 f:id:enia:20210228175941p:plain

次に、作成した平面オブジェクトの名前を「Ground」に変更します。 オブジェクトの名前は、オブジェクトを選択するとインスペクターの一番上に表示されています。 現状はPlaneになっていますね。 f:id:enia:20210228180343p:plain

Groundに変更してEnterを押してみましょう。 ヒエラルキービューの名前もGroundに変わったことが分かると思います。 f:id:enia:20210228180532p:plain

次に、インスペクターのTransformメニューをクリックして「リセット」を選択します。 f:id:enia:20210228180812p:plain

これで、このゲームオブジェクトはシーンの(0, 0, 0)座標に配置されます。 (0, 0, 0)はオリジンポイントと呼ばれ、このシーン内の全ての座標は(0,0,0)を基準に計算されます。 座標の値が変わったことを確認しましょう。 f:id:enia:20210228180914p:plain

現在、シーンにはグリッドが表示されていますが、チュートリアルの目的のためにグリッドをオフにします。 公式の動画ではギズモメニューからグリッドをオフにしていますが、場所が変わったようです。 グリッドの表示変更メニューを出します。 f:id:enia:20210228181746p:plain

不透明度を0に変更します。 すると、シーンからグリッドが消えます。 f:id:enia:20210228181936p:plain

次に、平面のサイズを変えてみましょう。 サイズを変えるにはヒエラルキービューの上にある、スケールツールを選択します。 するとシーンビュー内で平面を選択した時に、下の画像のように赤青緑の線が表示されるはずです。
この線を引っ張ると、平面のサイズが変更されます。

なお、平面には厚みがありません。そのため、通常Y方向のスケールは常に1になっています。 しかし、Y軸をマイナス方向に引っ張ってしまうと、平面が上下ひっくり返り、透明に見えてしまうので注意しましょう。
f:id:enia:20210228182401p:plain

スケールの変更は、インスペクターの「拡大/縮小」に直接値を設定することでも変更できます。
f:id:enia:20210228182754p:plain

プレイヤーオブジェクトを作成しよう

今回プレイヤーオブジェクトに使うのは、Unity標準の球体オブジェクトです。
ヒエラルキービューから「+」->「3Dオブジェクト」->「スフィア」を選択しましょう。 f:id:enia:20210228182923p:plain

オブジェクトの名前をPlayerに変更して、位置を(0, 0, 0)に設定しましょう。 f:id:enia:20210228183247p:plain

球オブジェクトが選択された状態で、トップメニューから「編集」->「選択したものを中央に」を選択しましょう。
シーンビューでShift + Fでも構いません。 f:id:enia:20210228183426p:plain

すると、球が半分地面に埋まってしまっているのが分かると思います。 これは、平面も球も(0, 0, 0)の座標に存在するからです。 f:id:enia:20210228183638p:plain

なので、平面より上に来るように球を移動させましょう。 Unity標準の立法体や球オブジェクトは、標準サイズが決まっています。 1×1×1、または1×2×1です。

なので、プレイヤーオブジェクト(球)をY軸方向に0.5ポイント上にずらせば、ちょうど平面上に来ます。 インスペクターで、球のY軸方向の位置を0.5に変更しましょう。
f:id:enia:20210228184040p:plain

シーンビューを見ると、球が平面の上に来たのがわかりますね。 f:id:enia:20210228184635p:plain

ところで、平面には球の影が落ちていますね。
Unityシーンを作ると、デフォルトのスカイボックスとディレクショナルライトが用意されています。
そのため、デフォルトのライティングについて気にする必要はありません。

スカイボックス:
デフォルトの背景のことのようです。

ディレクショナルライト:
太陽からの光を表現するように、単一方向から平行に降り注ぐ光のことのようです。

平面に色をつけよう

さて、このままでは白い平面の上に白い球があるので、見づらいですね。 そこで、平面に色をつけていきましょう。
オブジェクトに色、またはテクスチャをつけるにはマテリアルを利用します。 テクスチャ: テクスチャ (Texture) とは、物の表面に触れた際の質感、感触、外観。

ここでは、マテリアルについて詳しく説明しません。テクスチャも利用しません。 標準のマテリアルを利用して、シーン内のオブジェクトに色をつけるだけです。

マテリアルを格納するためのフォルダを作りましょう。 トップメニューから「アセット」->「作成」->「フォルダ」を選択します。

f:id:enia:20210228185228p:plain

プロジェクトビューに新しいフォルダが表示されるので名前をMaterialsにしましょう。 f:id:enia:20210228185311p:plain

Materialsフォルダが選択されている状態で、トップメニューから「アセット」->「作成」->「マテリアル」を選択します。 プロジェクトビューを見ると、Materialsフォルダの下に新しいマテリアルが作成されているのが分かります。
このマテリアルの名前を「background」に変更しましょう。 f:id:enia:20210228185624p:plain

backgroundマテリアルを選択してインスペクターを見ると、Main Mapsの一番上にアルベドという項目があるのが分かります。 f:id:enia:20210228190304p:plain

アルベド
アルベド(albedo)とは、天体の外部からの入射光に対する、反射光の比である。
0以上、1前後以下(1を>超えることもある)の無次元量であり、0 – 1の数値そのままか、0 % – 100 %の百分率で表す。 よくわかりませんが、色を表す項目のようです。

アルベドの白い四角の部分を押して、色を変更します。
ここでは、RGBを0, 32, 64に変更しましょう。
f:id:enia:20210228190242p:plain

インスペクターの下部にプレビューが表示されています。濃紺ですね。
f:id:enia:20210228190458p:plain

マテリアルを平面に反映させるには、プロジェクトビューでマテリアルを選択して、シーンビューの平面にドラッグアンドドロップするだけです。
すると、平面が先ほど指定した濃紺に変わります。
これでプレイヤー(ボール)が目立つようになりました。 f:id:enia:20210228191257p:plain

ライティングを変更しよう

最後にプレイヤーに対するライティングを変更します。
ヒエラルキーでディレクショナルライトを選択します。
f:id:enia:20210228190922p:plain

インスペクターで、回転のY軸を60に変更します。
f:id:enia:20210228191126p:plain

シーンビューで光の当たり方が変わったのを確認しましょう。 f:id:enia:20210228191213p:plain

これでプレイヤーオブジェクトと、プレイグラウンドの作成は完了です。

今回はここまで!