02 シーンとGameObject・コンポーネント - ruccho/first-step-to-unity GitHub Wiki

02 シーンとGameObject・コンポーネント

1

1.1 シーン

さて、基本操作が確認できたところで、実際にゲームを作っていく工程に入ります。今回のチュートリアルでは、弾転がしゲームを作ろうと思います。

ここでメニューからFile > Saveを選択し、今の作業内容を保存しておきます。

次にFile > New Sceneを押します。

image

Basic (Built-in) を選択してCreateを押します。

image

画面からカプセルが消え、もとのまっさらな状態に戻りました。

さきほどまでの作業内容はどこに行ったのでしょう?

Projectウィンドウを開き、Assets/Scenesフォルダを見てましょう。

image

SampleScene.unityというファイルがあります。さきほど配置したカプセルなどはこの中に保存されています。

Unityでは、配置したオブジェクトはSceneという概念で管理され、ファイルに保存されます。Sceneは複数作成することができ、必要に応じて切り替ることができます。

たとえば、ゲームのタイトル画面、メイン画面、リザルト画面をそれぞれシーンとして作成し、ゲームの進行に合わせ切り替える、といった使い方をするわけです。

では、いま新規に作成したシーンを保存しておきましょう。

image

メニューから File > Save As... で、Assets/Scenes内Main.unityという名前で保存しておきます。Assets以下の階層であれば他の場所に保存することもできます。

image

Projectウィンドウを確認すると、MainとSampleSceneのふたつができています。それぞれダブルクリックして開くと編集することができます。

image

1.2 オブジェクトの作成とコンポーネントの追加

それではMainシーンに戻って、玉転がしのステージを作っていきましょう。

Hierarchyから + > 2D Object > Planeを選択します。

image

平面があらわれました。

image

ちょっと中途半端な位置に出現してしまったので、位置を調整します。HierarchyでPlaneが選択された状態にして、Inspectorを見てみます。

image

このように、オブジェクトを選択状態にすると、Inspectorで詳細な情報を確認・編集することができます。 なにやらいろいろ表示されていますね……

ひとまず見るべきは「Transform」と書かれたセクションです。 ここにはオブジェクトの位置や回転、大きさなどを設定するところです。

Positionの欄がキモい小数になっているので、ぜんぶ0にして原点に移動させてしまいます。

image

ちょっと変化が分かりにくいですが、これでOKです。Planeが原点に移動しました。

image

玉を転がすための平面ができたので、こんどは玉を配置します。

さきほどと同様にHierarchyから + > 3D Object > Sphere を選択します。

image

こちらもほどよい場所に配置しておきます。

image

最低限玉と平面が配置できました。

ここで、一度Playしてみましょう。

image

良い感じに画角に映っていますが……玉が落ちませんね。

実は、Sphereを置いただけでは玉は物理的な振る舞いをしません。この玉に物理演算用のコンポーネントを取り付ける必要があります。

なんのこっちゃですが、ひとまずやってみましょう。Sphereを選択状態にしてInspectorを見ます。

image

ウィンドウ下部のAdd Componentを押して、Rigidbodyコンポーネントを追加します。

image

SphereのInspectorにRidigbodyと書かれたセクションが増えました。これでOKです。

image

では、もういちどPlayしてみます。

image

Sphereが落下して、Planeに落ちるようになりました!わかりにくければ、いろいろ高さを変えて試してみましょう。

2.2 GameObjectとコンポーネント

今やったように、Unityではオブジェクトにコンポーネントを取り付けることによって、オブジェクトの振る舞いを決定しますRigidbodyは「剛体」、すなわち落下したり、衝突したりといった物理的な物体の基本的な性質を実現するためのコンポーネントです。

また、UnityではSphereやPlane、CameraやDirectional Lightなどのシーン上に配置されたオブジェクトのことをGameObjectと呼びます。Unityではシーン上に存在する物体はすべてGameObjectであり、そこに複数のコンポーネントが取り付けられていきます。

Inspectorを見てみると、Rigidbodyのほかにもいろいろなコンポーネントがつけられていることが分かると思います。Sphereの例では、4つのコンポーネントがあらかじめ取り付けられています。

  • Transform
    • 位置・姿勢・大きさをコントロールするコンポーネント
  • Sphere (Mesh Filter)
    • 3Dモデルを取得するためのコンポーネント
  • Mesh Renderer
    • 3Dモデルを描画するためのコンポーネント
  • Sphere Collider
    • 球体の当たり判定を設定するコンポーネント

ほかにも、Main CameraであればCameraコンポーネント、Directional LightであればLightコンポーネントが取り付けられています。

試しに、Cameraコンポーネントのチェックを外した状態でゲームをPlayしてみましょう。

image

Gameビューに「Display 1 1No cameras rendering」と表示され、真っ暗な画面になってしまいました。 Main CameraはCameraコンポーネントによって画面を描画していたのでした。

image

このように、SphereもPlaneもMain CameraもDirectional Lightも、プレーンなGameObjectに対してコンポーネントが設定されることでそれぞれの性質を持っていることがわかります。もしこれらのコンポーネントを取り外してしまえば、SphereもCameraも同じです。

さきほどはHierarchyのメニューからPlaneやSphereを作成しましたが、あれはあらかじめコンポーネントが取り付けられた状態のGameObjectを作成する機能だったわけです。

⚠️ **GitHub.com Fallback** ⚠️