「Unityでのゲーム制作で最も重要なことは何か」と聞かれたら、筆者は「コンポーネント」と答えます。前回述べた通り、コンポーネントを適切に扱うことができないと、ゲームオブジェクトが機能しなくなり、ゲームが成り立たなくなるからです。逆に、コンポーネントを組み合わせて適切に使用することができれば、思い通りにゲームを制作することができるようになります。
コンポーネントはゲームオブジェクトの振る舞いを決めるものでした。しかし、現段階では「振る舞いを決めるってどういうこと?」と感じているかもしれません。そこで具体的な例を見るために、この記事ではいくつかのコンポーネントについて説明し、コンポーネントの設定を変更することでゲームオブジェクトの性質を変えてみます。
Unityプログラミング講座一覧はこちら

ゲームオブジェクトを作成する
コンポーネントはゲームオブジェクトの振る舞いを決めるものなので、ゲームオブジェクトがなければコンポーネントを操作することができません。コンポーネントの操作を行う前段階として、ゲームオブジェクトを作りましょう。

ヒエラルキービューで右クリックしてCreateから3D ObjectのSphereを選びましょう。球体が作成されます。(Sphere以外でもCube=立方体、Cylinder=円柱、Plane=平面など、いくつかの基本的な立体が用意されています。)
コンポーネントの例
位置・角度・大きさを決めるTransformコンポーネント

すべてのゲームオブジェクトが持っているコンポーネントとしてTransformコンポーネントがあります。これはゲームオブジェクトの位置情報や角度、大きさを決めるコンポーネントです。インスペクタービューでTransformの値Position, Rotation, Scaleを変えてゲームオブジェクトの位置や角度、大きさが変わることを確認しましょう。

Transformは頻繁に変更・調整するコンポーネントなのでシーンビューから操作することも可能です。左上にあるマークを選択することで位置、回転、大きさの制御が可能です。

ゲームオブジェクトを生成したときにTransformの位置が(0, 0, 0)ではない場所にいることがよくあります。そのような時はコンポーネントの右上のメニューからResetを選ぶことでコンポーネントの値をリセットできます。(回転や大きさも初期値に戻ります。)
物理演算の設定を行うRigidbodyコンポーネント
Rigidbodyコンポーネントを用いることで物理演算が可能になります。つまり、重力をゲームオブジェクトにかけたり、衝撃を与えて動かしたりできます。

先ほど作成したSphereにRigidbodyをつけてみましょう。インスペクタービューからAdd Componentを選びPhysicsからRigidbodyを選択します。
ゲームオブジェクトにコンポーネントをつけることやデータファイルを設定することをアタッチするということがあります。今回の場合、「RigidbodyをSphereにアタッチする」と言ったりします。

Rigidbodyがついたら再生ボタンを押してみてください。重力がかかって下に落ちていくと思います。
表示の設定を行うRendererコンポーネント

ゲームオブジェクトの見た目の設定を行うRendererコンポーネントがあります。このコンポーネントを用いることでゲームオブジェクトの色などを変えることができます。色を変えるにはRendererのマテリアル(Material)の設定を変更します。Default-Materialとなっている箇所の右側にある丸をクリックしてマテリアルを変更すると見た目が変わることが確認できます。

マテリアルは自分で作成することができます。プロジェクトビューで右クリックしてCreateからMaterialを選んでください。新しいマテリアルが作成されます。マテリアルを選択したらインスペクタービューのAlbedoを選んで色を変えてみましょう。作成したマテリアルはインスペクター上で設定するか、ゲームオブジェクトにドラッグ&ドロップすることでRendererに適用できます。

Rendererコンポーネントを持っていないゲームオブジェクトはゲーム画面に表示されません。表示はされませんが、ゲームオブジェクト自体は存在しています。つまり、見えない床などのギミックを作りたかったらRendererコンポーネントを使用しなければいいのです。実際に見えない床を作ってみましょう。Cubeを新しく作成しSphereの下に配置します。Rendererコンポーネントをoffにすれば見えない床の完成です。
衝突の判定を行うColliderコンポーネント

Rendererをoffにすることで見えない床ができました。では逆に見えるけど触ることのできないゲームオブジェクトを作るにはどうすればいいでしょうか。衝突の判定を行うColliderコンポーネントをoffにすれば実現できます。
Colliderコンポーネントの設定を変更すれば、当たり判定の範囲を変更することも可能です。例えば、プレイヤーの当たり判定の範囲を表示範囲よりも小さくすれば、敵にかすってもダメージを受けないといった仕様が実現できます。(例えば、SphereならSphere ColliderのRadius、CubeならBox ColliderのSizeの値を変えて遊んでみましょう。)
同じコンポーネントを持つゲームオブジェクトを作成してみよう
ゲームオブジェクトの性質はゲームオブジェクトにつけられているコンポーネントの設定により決まります。ということは、コンポーネントの設定が完全に同じゲームオブジェクトがあれば、それらは同じ性質を持つことになります。ここでは、空のゲームオブジェクトを作成してコンポーネントを設定することでSphereと同じものにしてみます。
空のゲームオブジェクトを作成する

コンポーネントが最も少ない「空の」ゲームオブジェクトを作成しましょう。ヒエラルキービューで右クリックしてCreate Emptyを選ぶと作成できます。「空」といってもすべてのゲームオブジェクトにはTransformコンポーネントが必ず付きます。
Transformコンポーネントの位置をSphereと同じにしてしまうと重なってしまうので、Position以外のRotationとScaleの2つの項目をSphereと同じにします。
Mesh Rendererを設定する

見た目をSphereを同じにしてみます。Sphereについているコンポーネントを見ながら同じ設定をしていけば大丈夫です。まず、Mesh Filterをアタッチします。次に、Meshの項目の右側にある丸をクリックしてSphereを選択します。最後に、Mesh RendererをアタッチしてSphereと同じマテリアルを設定してあげれば、見た目がSphereと同じになります。
Mesh(メッシュ)とは3Dの物体をコンピュータで表すのに用いる情報の1つです。メッシュは頂点、辺、面で構成され、物体はメッシュを用いた多面体として表現されます。Mesh RendererはMeshの情報を描画するコンポーネントであり、Meshが設定されていない場合正しく動作しません。
ColliderとRigidbodyを設定する

続いてColliderとRigidbodyの設定をします。Add ComponentからShpere ColliderとRigidbodyをアタッチすれば完了です。すでに使いたいコンポーネントが決まっている場合には検索バーに名前を打つことで素早くコンポーネントを探すことができます。
筆者の小言
「必要になったらその時に調べればいいから覚える必要はない」という人がいますが、私はそうは思いません。覚えれば覚えるほど作業が素早くこなせるようになります。後で楽するためにも覚えられるなら覚えるべきでしょう。ただし、無理に覚えようとして楽しくなくなりやめてしまっては本末転倒ですので注意しましょう。
以上により、空だったゲームオブジェクトはSphereと同じ性質をもつものになりました。ゲームを再生してみても2つの違いを見つけることはできないでしょう。ためしにSphereに設定したマテリアルの色を変えてみてください。2つのゲームオブジェクトは同じマテリアルが設定されているため、同時に色が変わるはずです。
まとめ
この記事では、コンポーネントについて説明を行いました。実際にいくつかのコンポーネントについて設定を行い、コンポーネントがゲームオブジェクトの性質を決めるものであることが分かったと思います。次回はいよいよプログラムについて説明します。
Unityプログラミング講座一覧はこちら

